open man page on NeXTSTEP

Man page or keyword search:  
man Server   1419 pages
apropos Keyword Search (all sections)
Output format
NeXTSTEP logo
[printable version]


OPEN(2)								       OPEN(2)

NAME
       open - open a file for reading or writing, or create a new file

BSD SYNOPSIS
       #include <libc.h>

       open(char *path, int flags, int mode);

POSIX SYNOPSIS
       #include <sys/file.h>
       #include <sys/stat.h>
       #include <fcntl.h>

       int open(const char *path, int flags, ...);

DESCRIPTION
       The  open  function  opens a file, whose pathname is specified by path,
       for reading and/or writing as specified	by  the	 flags	argument,  and
       returns	a  file	 descriptor  for  that	file  that  is the lowest file
       descriptor not currently open for the process.  The flags argument  may
       indicate	 that the file is to be created if it doesn't already exist by
       specifying the O_CREAT flag, in which case the  file  is	 created  with
       permissions  as	given  in  a  third  argument,	mode,  as described in
       chmod(2) and modified by the process' umask value (see umask(2)).   For
       POSIX  applications,  the  mode	argument  is optional, and isn't given
       unless the O_CREAT flag is specified.

       The path argument  is  a	 pointer  to  an  array	 of  ASCII  characters
       representing  a	pathname,  terminated  by a null character.  The flags
       argument specifies the file status flags and file access modes for  the
       open  file,  and	 it  must  contain exactly one of the following values
       (file access modes):

	      O_RDONLY	     Open for reading only.

	      O_WRONLY	     Open for writing only.

	      O_RDWR	     Open for reading and writing.

       Any combination of the following values may be bitwise or'ed  with  the
       file access mode above:

	      O_APPEND	     Append on each write.

	      O_CREAT	     If the file already exists, then this flag has no
			     effect,  except  as  noted	 under	O_EXCL	below.
			     Otherwise the file is created; the file's user ID
			     is set to the effective user ID  of  the  calling
			     process;  the file's group ID is set to the group
			     ID of the directory in which the file is created;
			     and  the file permission bits is set to the value
			     of the third argument, mode,  which  is  of  type
			     mode_t,  except  for  those  set  in the process'
			     umask value.  The value of the mode argument does
			     not   affect  whether  the	 file  is  opened  for
			     reading, writing or both.

	      O_EXCL	     If both O_EXCL and O_CREAT are set, then the open
			     function  will  fail  if the file exists, setting
			     errno to EEXIST.  This can be used to implement a
			     simple locking system.

			     If	 O_EXCL	 is  set and the last component of the
			     pathname is a symbolic link, then open will  fail
			     even if the symbolic link points to a nonexistent
			     name.

	      O_NDELAY	     (BSD only) If opening the file  would  result  in
			     the  process  being blocked for some reason, (for
			     example, waiting for carrier on a	dialup	line),
			     open  returns  immediately.   The	first time the
			     process attempts to perform I/O on the open  file
			     it will block (not currently implemented).

	      O_NOCTTY	     (POSIX   only)  If	 path  identifies  a  terminal
			     device, then open will  not  cause	 the  terminal
			     device to become the controlling terminal for the
			     calling process.

	      O_NONBLOCK     (POSIX only) As  the  BSD	O_NDELAY,  with	 these
			     additions:

			     When  opening  a  FIFO and the O_NONBLOCK flag is
			     set, then an open for reading will return without
			     delay.   On  the  other hand, an open for writing
			     will return an error if no process has  the  FIFO
			     open for reading.

			     When an opening a FIFO and the O_NONBLOCK flag is
			     clear, then an open for reading will block	 until
			     a	process	 opens	the  FIFO for writing.	On the
			     other hand, an open for writing will block	 until
			     a process opens the FIFO for reading.

			     When opening a block special or character special
			     file that supports	 nonblocking  opens,  and  the
			     O_NONBLOCK	 flag  is  set, then the open function
			     will return without  delay.   If  the  O_NONBLOCK
			     flag  is clear, then the function will wait until
			     the  device  is   ready   or   available	before
			     returning.

	      O_TRUNC	     If	 the  file exists and is a regular file, it is
			     truncated to zero length upon successful open.

       If O_CREAT is set and the file did not exist previously, then open will
       mark  of update the st_atime, st_ctime and st_mtime fields of the file,
       and the st_ctime and st_mtime fields of the directory in which the file
       is created.

       If  O_TRUNC is set and the file previously existed, then open will mark
       for update the st_ctime and st_mtime fields of the file.

       Upon successful completion, open sets the file pointer used to mark the
       current	position  within  the  file  to	 the  beginning	 of  the file.
       Furthermore, the new descriptor is set to  remain  open	across	execve
       system calls—the close-on-exec file descriptor flag associated with the
       new file descriptor is cleared; see close(2) and fcntl(2).

       The system imposes a limit on the number of file descriptors  that  can
       be  opened  simultaneously  by  one process.  For BSD applications, the
       getdtablesize(2) function returns the current system limit.  For	 POSIX
       applications, this number is given by the constant OPEN_MAX.

RETURN VALUE
       Upon   successful  completion,  open  opens  the	 file  and  returns  a
       nonnegative  integer  representing  the	lowest	numbered  unused  file
       descriptor.   Otherwise,	 the  function	returns	 -1  and sets errno to
       indicate the error.

ERRORS
       If any of the following conditions occurs, open	returns	 -1  and  sets
       errno to the corresponding value:

       [EACCES]	      Search  permission is denied for a component of the path
		      prefix; or, the required permissions (for reading and/or
		      writing)	are  denied for the named flag; or, O_CREAT is
		      specified, the file does not exist, and the directory in
		      which  it	 is to be created does not permit writing; or,
		      O_TRUNC is  specified  and  the  file  does  not	permit
		      writing.

       [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 because the user's quota of
		      disk blocks on the file system containing the  directory
		      has  been	 exhausted; or, O_CREAT is specified, the file
		      does not exist, and 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 specified and the file exists.

       [EFAULT]	      The path argument points outside the process's allocated
		      address space.

       [EINTR]	      (POSIX  only)  The  open	function  was interrupted by a
		      signal.

       [EIO]	      An I/O error occurred while making the  directory	 entry
		      or allocating the inode for O_CREAT.

       [EISDIR]	      The  named  file	is a directory, and the flags argument
		      specifies O_WRONLY or O_RDWR.

       [ELOOP]	      Too many symbolic links were encountered in  translating
		      the pathname.

       [EMFILE]	      The  system  limit for open file descriptors per process
		      has already been reached.

       [ENAMETOOLONG] A component of  path  exceeds  255  characters,  or  the
		      entire  pathname	exceeds	 1023  characters.   For POSIX
		      applications these values are  given  by	the  constants
		      {NAME_MAX} and {PATH_MAX}, respectively.

       [ENFILE]	      The  system  file	 table	is  full  (too	many files are
		      currently open in the system).

       [ENOENT]	      O_CREAT is not set and the named file  does  not	exist;
		      or,  O_CREAT  is	set  and  either  a  component	of the
		      pathname that must exist does not exist or path is empty
		      string.

       [ENOSPC]	      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 because there is no space left
		      on the file system containing the directory; or, O_CREAT
		      is  specified, the file does not exist, and there are no
		      free inodes on the file system  on  which	 the  file  is
		      being created.

       [ENOTDIR]      A 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; or (POSIX only), O_NONBLOCK is set, the
		      file is a FIFO, O_WRONLY is set and no process  has  the
		      FIFO opened for reading.

       [EOPNOTSUPP]   (BSD  only)  An  attempt	was made to open a socket (not
		      currently implemented).

       [EROFS]	      The named file resides on a read-only file  system,  and
		      the file is to be modified (O_WRONLY, O_RDWR, O_CREAT or
		      O_TRUNC is set).

       [ETXTBSY]      The file is a pure procedure (shared text) file that  is
		      being executed and the open call requests write access.

SEE ALSO
       chmod(2),  close(2),  dup(2),  fcntl(2),	 lseek(2),  read(2), umask(2),
       write(2)

4th Berkeley Distribution	August 1, 1992			       OPEN(2)
[top]

List of man pages available for NeXTSTEP

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net