creat(2) creat(2)
NAME
creat, creat64 - create a new file or rewrite an existing one
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int creat(const char *path, modet mode);
int creat64(const char *path, modet mode);
DESCRIPTION
creat() creates a new file or prepares to rewrite an existing file
named by the pathname pointed to by path.
If the file exists, the length is truncated to 0 and the mode and
owner are unchanged.
If the file does not exist the file's owner ID is set to the effective
user ID of the process. The group ID of the file is set to the effec-
tive group ID of the process, or if the SISGID bit is set in the
parent directory then the group ID of the file is inherited from the
parent directory. The access permission bits of the file mode are set
to the value of mode modified as follows:
- If the group ID of the new file does not match the effective group
ID or one of the supplementary group IDs, the SISGID bit is
cleared.
- All bits set in the process' file mode creation mask are cleared
[see umask(2)].
- The "save text image after execution bit" of the mode is cleared
[see chmod(2)].
Upon successful completion, a write-only file descriptor is returned
and the file is open for writing, even if the mode does not permit
writing. The file pointer is set to the beginning of the file. The
file descriptor is set to remain open across exec system calls [see
fcntl(2)]. A new file may be created with a mode that forbids writing.
The call creat(path, mode) is equivalent to:
open(path, OWRONLY | OCREAT | OTRUNC, mode)
There is no functional difference between creat() and creat64(),
except for the interpretation of off64t [see lfs(5)].
Page 1 Reliant UNIX 5.44 Printed 11/98
creat(2) creat(2)
ERRORS
The following error code descriptions are function-specific. You will
find a general description in introprm2(2) or in errno(5).
creat() fails if one or more of the following apply:
EACCES Search permission is denied on a component of the path
prefix.
EACCES The file does not exist and the directory in which the
file is to be created does not permit writing.
EACCES The file exists and write permission is denied.
EAGAIN The file exists, mandatory file/record locking is set,
and there are outstanding record locks on the file [see
chmod(2)].
EFAULT path points outside the allocated address space of the
process.
EISDIR The named file is an existing directory.
EINTR A signal was caught during the creat() system call.
ELOOP Too many symbolic links were encountered in translating
path.
EMFILE The process has too many open files [see getrlimit(2)].
ENAMETOOLONG The length of the path argument exceeds PATHMAX or the
length of a path component exceeds NAMEMAX.
ENOTDIR A component of the pathname is not a directory.
ENOENT A component of the pathname does not exist.
ENOENT The pathname is null.
EROFS The named file resides or would reside on a read-only
file system.
ETXTBSY The file is a pure procedure (shared text) file that is
being executed.
ENFILE The system file table is full.
ENOSPC The file system is out of inodes.
Page 2 Reliant UNIX 5.44 Printed 11/98
creat(2) creat(2)
RESULT
Upon successful completion a non-negative integer, namely the lowest
numbered unused file descriptor, is returned. Otherwise, a value of -1
is returned, no files are created or modified, and errno is set to
indicate the error.
SEE ALSO
chmod(2), close(2), dup(2), fcntl(2), getrlimit(2), lseek(2), open(2),
read(2), umask(2), write(2), fcntl(5), lfs(5), stat(5), types(5).
Page 3 Reliant UNIX 5.44 Printed 11/98