*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> standard/open (2)              
Title
Content
Arch
Section
 

Contents


open(2)								       open(2)


NAME    [Toc]    [Back]

     open - open for reading or	writing

C SYNOPSIS    [Toc]    [Back]

     #include <sys/types.h>
     #include <sys/stat.h>
     #include <fcntl.h>

     int open (const char *path<b>, int oflag<b>, ...	/* mode_t mode <b>*/);

DESCRIPTION    [Toc]    [Back]

     path points to a path name	naming a file.	open opens a file descriptor
     for the named file	and sets the file status flags according to the	value
     of	oflag.	oflag values are constructed by	OR-ing Flags from the
     following list (only one of the first three flags below may be used):

     O_RDONLY
	    Open for reading only.

     O_WRONLY
	    Open for writing only.

     O_RDWR Open for reading and writing.

     O_NDELAY or O_NONBLOCK
	    These flags	may affect subsequent reads and	writes [see read(2)
	    and	write(2)].  If both O_NDELAY and O_NONBLOCK are	set,
	    O_NONBLOCK will take precedence.

	    When opening a FIFO	with O_RDONLY or O_WRONLY set:

		    If O_NDELAY	or O_NONBLOCK is set:  An open for readingonly
 will return without delay; an open for	writing-only
		    will return	an error if no process currently has the file
		    open for reading.

		    If O_NDELAY	and O_NONBLOCK are clear:  An open for
		    reading-only will block until a process opens the file for
		    writing; an	open for writing-only will block until a
		    process opens the file for reading.

	    When opening a file	associated with	a communication	line:

		    If O_NDELAY	or O_NONBLOCK is set:  The open	will return
		    without waiting for	the device to be ready or available;
		    subsequent behavior	of the device is device	specific.

		    If O_NDELAY	and O_NONBLOCK are clear:  The open will block
		    until the device is	ready or available.






									Page 1






open(2)								       open(2)



     O_APPEND
	    If set, the	file pointer will be set to the	end of the file	prior
	    to each write.

     O_SYNC When opening a regular file, this flag affects subsequent writes.
	    If set, each write(2) will wait for	both the file data and file
	    status to be physically updated.

     O_DSYNCWhen opening a regular file, this flag affects subsequent writes.
	    If set, each write(2) will wait for	the file data to be physically
	    updated.

     O_RSYNCWhen opening a regular file, this flag affects subsequent reads.
	    If set, and	either O_SYNC or O_DSYNC is set	then each read(2) will
	    wait for the file to be in the same	state as O_SYNC	or O_DSYNC
	    would require for writes.

     O_NOCTTY
	    If set and the file	is a terminal, the terminal will not be
	    allocated as the calling process's controlling terminal.

     O_CREATIf the file	exists,	this flag has no effect, except	as noted under
	    O_EXCL below.  Otherwise, the file is created and the owner	ID of
	    the	file is	set to the effective user IDs of the process, the
	    group ID of	the file is set	to the effective group IDs of the
	    process or to the group ID of the directory	in which the file is
	    being created.  This is determined as follows:

		 If the	underlying filesystem was mounted with the BSD file
		 creation semantics flag [see fstab(4)]	or the S_ISGID bit is
		 set [see chmod(2)] on the parent directory, then the group ID
		 of the	new file is set	to the group ID	of the parent
		 directory, otherwise it is set	to the effective group ID of
		 the calling process.
	    If the group ID of the new file does not match the effective group
	    ID or one of the supplementary groups IDs, the S_ISGID bit is
	    cleared. The access	permission bits	of the file mode are set to
	    the	value of mode, modified	as follows [see	creat(2)]:

		    All	bits set in the	file mode creation mask	of the process
		    are	cleared	[see umask(2)].

		    The	``save text image after	execution bit''	of the mode is
		    cleared [see chmod(2)].

     O_TRUNCIf the file	exists and is a	regular	file, and the file is
	    successfully opened	O_RDWR or O_WRONLY, its	length is truncated to
	    0 and the mode and owner are unchanged.  It	will have no effect on
	    FIFO special files or terminal device files.  It's effect on other
	    files types	is implementation-dependent.  The result of using
	    O_TRUNC with O_RDONLY is undefined.




									Page 2






open(2)								       open(2)



     O_EXCL If O_EXCL and O_CREAT are set, open	will fail if the file exists.
	    The	check for the existence	of the file and	the creation of	the
	    file if it does not	exist is atomic	with respect to	other
	    processes executing	open naming the	same filename in the same
	    directory with O_EXCL and O_CREAT set.

     O_LCFLUSH
	    If set, when all copies of a file descriptor are closed, all
	    modified buffers associated	with the file will be written back to
	    the	physical medium.  O_LCFLUSH is a Silicon Graphics extension.

     O_LCINVAL
	    If set, when all copies of a file descriptor are closed, all
	    modified buffers associated	with the file will be written back to
	    the	physical medium, then invalidated, immediately freeing the
	    buffers for	other use.  The	process	doing the last close must be
	    able to aquire write access	at the time of last close for the
	    cache to be	invalidated.  O_LCINVAL	is a Silicon Graphics
	    extension.

     O_DIRECT
	    If set, all	reads and writes on the	resulting file descriptor will
	    be performed directly to or	from the user program buffer, provided
	    appropriate	size and alignment restrictions	are met.  Refer	to the
	    F_SETFL and	F_DIOINFO commands in the fcntl(2) manual entry	for
	    information	about how to determine the alignment constraints.
	    O_DIRECT is	a Silicon Graphics extension and is only supported on
	    local EFS and XFS file systems, and	remote BDS file	systems.

     When opening a STREAMS file, oflag	may be constructed from	O_NDELAY or
     O_NONBLOCK	OR-ed with either O_RDONLY, O_WRONLY , or O_RDWR.  Other flag
     values are	not applicable to STREAMS devices and have no effect on	them.
     The values	of O_NDELAY and	O_NONBLOCK affect the operation	of STREAMS
     drivers and certain system	calls [see read(2), getmsg(2), putmsg(2), and
     write(2)].	 For drivers, the implementation of O_NDELAY and O_NONBLOCK is
     device specific.  Each STREAMS device driver may treat these options
     differently.

     When open is invoked to open a named stream, and the connld module	[see
     connld(7)]	has been pushed	on the pipe, open blocks until the server
     process has issued	an I_RECVFD ioctl [see streamio(7)] to receive the
     file descriptor.

     If	path is	a symbolic link	and O_CREAT and	O_EXCL are set,	the link is
     not followed.

     The file pointer used to mark the current position	within the file	is set
     to	the beginning of the file.

     The new file descriptor is	the lowest numbered file descriptor available
     and is set	to remain open across exec system calls	[see fcntl(2)].




									Page 3






open(2)								       open(2)



     Certain flag values can be	set following open as described	in fcntl(2).

     If	O_CREAT	is set and the file did	not previously exist, upon successful
     completion	open marks for update the st_atime, st_ctime and st_mtime
     fields of the file	and the	st_ctime and st_mtime fields of	the parent
     directory.

     If	O_TRUNC	is set and the file did	previously exist, upon successful
     completion	open marks for update the st_ctime and st_mtime	fields of the
     file.

     There is a	system enforced	limit on the number of open file descriptors
     per process {OPEN_MAX}, whose value is returned by	the getdtablesize(2)
     function.

     The named file is opened unless one or more of the	following are true:

     EACCES The	file does not exist and	write permission is denied by the
	    parent directory of	the file to be created.

     EACCES O_CREAT or O_TRUNC is specified and	write permission is denied.

     EACCES A component	of the path prefix denies search permission.

     EACCES The	file is	a character or block device file and the file system
	    in which it	resides	has been mounted with the nodev	option [see
	    fstab(4)].

     EACCES oflag permission is	denied for an existing file.

     EAGAIN The	file exists, O_CREAT or	O_TRUNC	are specified, mandatory
	    file/record	locking	is set,	and there are outstanding record locks
	    on the file	[see chmod(2)].

     EBUSY  path points	to a device special file and the device	is in the
	    closing state.

     EDQUOT O_CREAT is specified, the file does	not exist, and the directory
	    in which the entry for the new file	is being placed	cannot be
	    extended either because the	user's quota of	disk blocks on the
	    file system	containing the directory has been exhausted or the
	    user's quota of inodes on the file system on which the file	is
	    being created has been exhausted.

     EEXIST O_CREAT and	O_EXCL are set,	and the	named file exists.

     EFAULT path points	outside	the allocated address space of the process.

     EINTR  A signal was caught	during the open	system call.






									Page 4






open(2)								       open(2)



     EINVAL An attempt was made	to open	a file not in an EFS, XFS or BDS file
	    system with	O_DIRECT set.

     EIO    A hangup or	error occurred during the open of the STREAMS-based
	    device.

     EISDIR The	named file is a	directory and oflag is write or	read/write.

     ELOOP  Too	many symbolic links were encountered in	translating path.

     EMFILE The	process	has too	many open files	[see getrlimit(2)].

     ENAMETOOLONG
	    The	length of the path argument exceeds {PATH_MAX},	or the length
	    of a path component	exceeds	{NAME_MAX} while {_POSIX_NO_TRUNC} is
	    in effect.

     ENFILE The	system file table is full.

     ENODEV path points	to a device special file and the device	is not in the
	    activated state.

     ENOENT O_CREAT is not set and the named file does not exist.

     ENOENT O_CREAT is set and a component of the path prefix does not exist
	    or is the null pathname.

     ENOMEM The	system is unable to allocate a send descriptor.

     ENOSPC O_CREAT and	O_EXCL are set,	and the	file system is out of inodes
	    or the directory in	which the entry	for the	new file is being
	    placed cannot be extended because there is no space	left on	the
	    file system	containing the directory.

     ENOSPC O_CREAT is set and the directory that would	contain	the file
	    cannot be extended.

     ENOSR  Unable to allocate a stream.

     ENOTDIRA component	of the path prefix is not a directory.

     ENXIO  The	named file is a	character special or block special file, and
	    the	device associated with this special file does not exist.

     ENXIO  O_NDELAY or	O_NONBLOCK is set, the named file is a FIFO, O_WRONLY
	    is set, and	no process has the file	open for reading.

     ENXIO  A STREAMS module or	driver open routine failed.

     EOPNOTSUPP
	    An attempt was made	to open	a socket (not currently	supported).




									Page 5






open(2)								       open(2)



     EPERM  path points	to a device special file, the device is	in the setup
	    state, and the calling process does	not have the P_DEV privilege.

     ETIMEDOUT
	    The	object of the open is located on a remote system which is not
	    available [see intro(2)].

     EROFS  The	named file resides on a	read-only file system and either
	    O_WRONLY, O_RDWR, O_CREAT, or O_TRUNC is set in oflag (if the file
	    does not exist).

SEE ALSO    [Toc]    [Back]

      
      
     chmod(2), close(2), creat(2), dup(2), exec(2), fcntl(2),
     getdtablesize(2), getmsg(2), getrlimit(2),	intro(2), lseek(2), putmsg(2),
     read(2), stat(2), stat(5),	umask(2), write(2)

DIAGNOSTICS    [Toc]    [Back]

     Upon successful completion, the file descriptor is	returned.  Otherwise,
     a value of	-1 is returned and errno is set	to indicate the	error.


									PPPPaaaaggggeeee 6666
[ Back ]
 Similar pages
Name OS Title
creat Tru64 Open a file for reading or writing
IPC::Open2 IRIX open a process for both reading and writing
open HP-UX open file for reading or writing
open Tru64 Open a file for reading or writing
open FreeBSD open or create a file for reading or writing
TIFFOpen IRIX open a TIFF file for reading or writing
open NetBSD open or create a file for reading or writing
open OpenBSD open or create a file for reading or writing
IPC::Open3 IRIX open a process for reading, writing, and error handling
XTIFFOpen IRIX open an extended TIFF file for reading or writing
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service