glenda.party
term% ls -F
term% cat index.txt
OPEN(2)                       System Calls Manual                      OPEN(2)



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(2)  or  execl  system  call  is  made;  and
       ORCLOSE  says to remove the file when it is closed (by everyone who has
       a copy of the file descriptor).  Open fails if the file does not  exist
       or  the user does not have permission to open it for the requested pur‐
       pose (see stat(2) for a description 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(2)), OEXEC is  actu‐
       ally 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(5).

       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.   If  the
       file  is new and the directory in which it is created is a union direc‐
       tory (see intro(2)) then the constituent directory where  the  file  is
       created depends on the structure of the union: see bind(2).

       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(5)  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
       /sys/src/libc/9syscall

SEE ALSO
       intro(2), bind(2), stat(2)

DIAGNOSTICS
       These functions set errstr.



                                                                       OPEN(2)