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
       implicit	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
       associated 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 con-
       taining directory; the permissions to perm ANDed	with  the  permissions
       of  the	containing directory.  If the file already exists, it is trun-
       cated 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	exclusive-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