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  OR‐
       CLOSE  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 purpose
       (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  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 CHDIR bit is set in  omode.   It
       is  an  exclusive-use file if the CHEXCL bit is set.  Such 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,  or if the file already exists and does not permit the access de‐
       fined by omode.  If the file is new and the directory in  which  it  is
       created is a union directory (see intro(2)) then the constituent direc‐
       tory where the file is created depends on the structure of  the  union:
       see bind(2).

       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)