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
       /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://man.freebsd.org/cgi/man.cgi?query=open&sektion=3&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help