creat - create a new file
This interface is made obsolete by open(2).
Creat creates a new file or prepares to rewrite an existing file called name, given as the
address of a null-terminated string. If the file did not exist, it is given mode mode, as
modified by the process's mode mask (see umask(2)). Also see chmod(2) for the construc-
tion of the mode argument.
If the file did exist, its mode and owner remain unchanged but it is truncated to 0
The file is also opened for writing, and its file descriptor is returned.
The mode given is arbitrary; it need not allow writing. This feature has been used in the
past by programs to construct a simple, exclusive locking mechanism. It is replaced by
the O_EXCL open mode, or flock(2) facility.
The value -1 is returned if an error occurs. Otherwise, the call returns a non-negative
descriptor that only permits writing.
Creat will fail and the file will not be created or truncated if one of the following
[ENOTDIR] A component of the path prefix is not a directory.
[EINVAL] The pathname contains a character with the high-order bit set.
[ENAMETOOLONG] A component of a pathname exceeded 255 characters, or an entire path name
exceeded 1023 characters.
[ENOENT] The named file does not exist.
[ELOOP] Too many symbolic links were encountered in translating the pathname.
[EACCES] Search permission is denied for a component of the path prefix.
[EACCES] The file does not exist and the directory in which it is to be created is
[EACCES] The file exists, but it is unwritable.
[EISDIR] The file is a directory.
[EMFILE] There are already too many files open.
[ENFILE] The system file table is full.
[ENOSPC] The directory in which the entry for the new file is being placed cannot be
extended because there is no space left on the file system containing the
[ENOSPC] There are no free inodes on the file system on which the file is being cre-
[EDQUOT] The directory in which the entry for the new file is being placed cannot be
extended because the user's quota of disk blocks on the file system con-
taining the directory has been exhausted.
[EDQUOT] The user's quota of inodes on the file system on which the file is being
created has been exhausted.
[EROFS] The named file resides on a read-only file system.
[ENXIO] The file is a character special or block special file, and the associated
device does not exist.
[ETXTBSY] The file is a pure procedure (shared text) file that is being executed.
[EIO] An I/O error occurred while making the directory entry or allocating the
[EFAULT] Name points outside the process's allocated address space.
[EOPNOTSUPP] The file was a socket (not currently implemented).
open(2), write(2), close(2), chmod(2), umask(2)
4th Berkeley Distribution May 22, 1986 CREAT(2)