creat(2)creat(2)NAMEcreat - create a new file or rewrite an existing one
SYNOPSISDESCRIPTION
The system call creates a new regular file or prepares to rewrite an
existing file named by the path name pointed to by path.
If the file exists, its length is truncated to 0, and its mode and
owner are unchanged. Otherwise, the file's owner ID is set to the
effective user ID of the process. If the set-group-ID bit of the par‐
ent directory is set, the file's group ID is set to the group ID of the
parent directory. Otherwise, the file's group ID is set to the
process's effective group ID. The low-order 12 bits of the file mode
are set to the value of mode modified as follows:
· All bits set in the process's file mode creation mask are
cleared (see umask(2)).
· The "save text image after execution" bit of the mode is
cleared (see chmod(2)).
If the system call is made in 64 bit mode, the status flag is automati‐
cally set (see fcntl(5) or open(2)).
Upon successful completion, the file descriptor is returned and the
file is open for writing (only), even if the mode does not permit writ‐
ing. The file offset is set to the beginning of the file. The file
descriptor is set to remain open across system calls (see fcntl(2)).
Each process has a limit on how many files it can open simultaneously.
Refer to getrlimit(2) for the open files limit. This is also discussed
in open(2). A new file can be created with a mode that forbids writ‐
ing.
Access Control Lists - HFS File Systems Only
On HFS file systems that support access control lists, three base ACL
entries are created corresponding to the file access permission bits.
An existing file's access control list is unchanged by (see setacl(2),
chmod(2), and acl(5)).
Access Control Lists - JFS File Systems Only
On JFS file systems that support access control lists, optional ACL
entries are created corresponding to the parent directory's default ACL
entries. An existing file's access control list is unchanged by (see
acl(2), chmod(2), and aclv(5)).
RETURN VALUE
returns the following values:
Successful completion.
n is the value of the file descriptor. It is nonnega‐
tive.
Failure.
is set to indicate the error.
ERRORS
If fails, is set to one of the following values:
Search permission is denied on a component of the path prefix.
The file does not exist and the directory in which the file
is to be created does not permit writing.
The file exists and write permission is denied.
The file exists, enforcement mode file and record locking is set
and
there are outstanding record locks on the file.
User's or group's disk quota block or inode limit
has been reached for this file system.
path points outside the allocated address space of the
process. The reliable detection of this error is
implementation dependent.
The named file is an existing directory.
Too many symbolic links were encountered in translating the path
name.
More than the maximum number of file descriptors are currently
open.
The length of the specified path name exceeds
bytes, or the length of a component of the path
name exceeds bytes while is in effect.
The system file table is full.
The named file does not exist (for example,
path is null, or a component of path does not
exist).
Not enough space on the file system.
A component of the path prefix is not a directory.
The named file is a character special or block special file,
and the device associated with this special file
does not exist.
The named file is a regular file and the size of the file cannot
be represented correctly in an object of type
The named file resides or would reside on a read-only file sys‐
tem.
The file is a pure procedure (shared text) file that is being
executed.
SEE ALSOchmod(2), close(2), creat64(2), dup(2), fcntl(2), lockf(2), lseek(2),
open(2), open64(2), read(2), setacl(2), truncate(2), umask(2),
write(2), acl(5), aclv(5), privileges(5).
STANDARDS CONFORMANCEcreat(2)