148 lines · 3.3 KB · Text
RawDownload
.TH OPEN 2.SH NAMEopen, create, close \- open a file for reading or writing, create file.SH SYNOPSIS.B #include <u.h>.br.B #include <libc.h>.PP.Bint open(char *file, int omode).PP.Bint create(char *file, int omode, ulong perm).PP.Bint close(int fd).SH DESCRIPTION.I Openopens the.I filefor I/O and returns an associated file descriptor..I Omodeis one of.BR OREAD ,.BR OWRITE ,.BR ORDWR ,or.BR 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.IR omode :.B OTRUNCsays to truncate the fileto zero length before opening it;.B OCEXECsays to close the file when an.IR exec (2)or.I execlsystem call is made;and.B ORCLOSEsays to remove the file when it is closed (by everyone who has a copy of the file descriptor)..I Openfails if the file does not exist or the user does not havepermission to open it for the requested purpose(see.IR stat (2)for a description of permissions).The user must have write permission on the.I fileif the.B OTRUNCbit is set.For the.I opensystem call(unlike the implicit.I openin.IR exec (2)),.B OEXECis actually identical to.BR OREAD ..PP.I Createcreates a new.I fileor prepares to rewrite an existing.IR file ,opens it according to.I omode(as described for.IR 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 containing directory;the permissions to.I permANDed 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.B DMDIRbit is set in.IR perm ,an exclusive-use file if the.B DMEXCLbit is set, and an append-only file if the.B DMAPPENDbit 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 donefor an extended period; see.IR open (5)..PP.I Createfails if the path up to the last element of.I filecannot be evaluated, if the user doesn't have write permissionin the final directory, if the file already exists anddoes not permit the access defined by.IR omode ,of if there there are no free file descriptors.In the last case, the file may be created even whenan error is returned.If the file is new and the directory in which it is created isa union directory (see.IR intro (2))then the constituent directory where the file is createddepends on the structure of the union: see.IR bind (2)..PPSince.I createmay succeed even if the file exists, a special mechanism is necessaryfor those applications that require an atomic create operation.If the.B OEXCL.RB ( 0x1000 )bit is set in the.I modefor a.IR create,the call succeeds only if the file does not already exist;see.IR open (5)for details..PP.I Closecloses the file associated with a file descriptor.Provided the file descriptor is a valid open descriptor,.I closeis guaranteed to close it; there will be no error.Files are closed automatically upon termination of a process;.I closeallows the file descriptor to be reused..SH SOURCE.B /sys/src/libc/9syscall.SH SEE ALSO.IR intro (2),.IR bind (2),.IR stat (2).SH DIAGNOSTICSThese functions set.IR errstr .