Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
OPEN(3)			   Library Functions Manual		       OPEN(3)

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

SYNOPSIS
       #include	<u.h>
       #include	<libc.h>

       int open(char *file, int	omode)

       int create(char *file, int omode, ulong perm)

       int close(int fd)

DESCRIPTION
       Open  opens the file for	I/O and	returns	an associated file descriptor.
       Omode is	one of OREAD, OWRITE, ORDWR, or	OEXEC, asking  for  permission
       to read,	write, read and	write, or execute, respectively.  In addition,
       there are three values that can be ORed with the	omode: OTRUNC says  to
       truncate	 the  file  to	zero  length before opening it;	OCEXEC says to
       close the file when an exec(3) or execl system call  is	made;  ORCLOSE
       says  to	 remove	the file when it is closed (by everyone	who has	a copy
       of the file descriptor);	and OAPPEND says to open the file  in  append-
       only  mode,  so that writes are always appended to the end of the file.
       Open fails if the file does not exist or	the user does not have permis-
       sion  to	 open it for the requested purpose (see	stat(3)	for a descrip-
       tion of permissions).  The user must have write permission on the  file
       if  the	OTRUNC	bit  is	set.  For the open system call (unlike the im-
       plicit open in exec(3)),	OEXEC is actually identical to OREAD.

       Create creates a	new file or prepares  to  rewrite  an  existing	 file,
       opens it	according to omode (as described for open), and	returns	an as-
       sociated	file descriptor.  If the file is new, the owner	is set to  the
       userid of the creating process group; the group to that of the contain-
       ing directory; the permissions to perm ANDed with  the  permissions  of
       the  containing directory.  If the file already exists, it is truncated
       to 0 length, and	the permissions, owner,	and  group  remain  unchanged.
       The created file	is a directory if the DMDIR bit	is set in perm,	an ex-
       clusive-use file	if the DMEXCL bit is set, and an append-only  file  if
       the  DMAPPEND  bit  is set.  Exclusive-use files	may be open for	I/O by
       only one	client at a time, but the file descriptor may  become  invalid
       if no I/O is done for an	extended period; see open(9p).

       Create fails if the path	up to the last element of file cannot be eval-
       uated, if the user doesn't have write permission	in  the	 final	direc-
       tory, if	the file already exists	and does not permit the	access defined
       by omode, of if there there are no free file descriptors.  In the  last
       case, the file may be created even when an error	is returned.

       Since  create  may succeed even if the file exists, a special mechanism
       is necessary for	those applications that	require	an atomic create oper-
       ation.	If the OEXCL (0x1000) bit is set in the	mode for a create, the
       call succeeds only if the file does not already exist; see open(9p) for
       details.

       Close  closes the file associated with a	file descriptor.  Provided the
       file descriptor is a valid open	descriptor,  close  is	guaranteed  to
       close  it; there	will be	no error.  Files are closed automatically upon
       termination of a	process;  close	 allows	 the  file  descriptor	to  be
       reused.

SOURCE
       /usr/local/plan9/src/lib9

SEE ALSO
       intro(3), stat(3)

DIAGNOSTICS
       These functions set errstr.

BUGS
       Not all functionality is	supported on all systems.

       The DMAPPEND bit	is not supported on any	systems.

       The  implementation  of ORCLOSE is to unlink the	file after opening it,
       causing problems	in programs that try to	access the file	by name	before
       it is closed.

       To avoid	name conflicts with the	underlying system, open	and create are
       preprocessor macros defined as p9open and p9create; see intro(3).

								       OPEN(3)

NAME | SYNOPSIS | DESCRIPTION | SOURCE | SEE ALSO | DIAGNOSTICS | BUGS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=open&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help