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 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  permission
       to  open	it for the requested purpose (see for a	description of permis-
       sions).	The user must have write permission on the file	if the	OTRUNC
       bit  is	set.   For  the	 open system call (unlike the implicit open in
       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
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

								       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.1-RELEASE+and+Ports>

home | help