creat(S-osr5)
creat --
create a new file or rewrite an existing one
Syntax
cc . . . -lc
#include <fcntl.h>
int creat(const char *path, mode_t mode);
Description
The creat system call
creates a new ordinary file or prepares to rewrite an existing file
named by the path name pointed to by path.
If the file exists, the length is truncated to 0 and the mode
and owner are unchanged.
Otherwise, 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 effective group
ID of the process;
and 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(S-osr5)).
-
The ``save text image after execution bit'' of the mode is cleared
(see
chmod(S-osr5)).
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(S-osr5)).
No process may have more than FOPEN_MAX
files open simultaneously.
A new file may be created with a mode that forbids writing.
Symbolic constants defining the access permission bits are specified
in the <sys/stat.h> header file and should be used to construct
mode (see
chmod(S-osr5)).
The call creat(path, mode) is equivalent to the following
(see
open(S-osr5)):
open(path, O_WRONLY | O_CREAT | O_TRUNC, mode)
The creat system call
fails if one or more of the following is true:
[EACESS]-
-
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.
[EAGAIN]-
The file exists,
mandatory file/record locking is set,
and there are outstanding record locks on the file
(see
chmod(S-osr5)).
[EFAULT]-
The path
argument points outside the allocated address space of the process.
[EINTR]-
A signal was caught during the creat system call.
[EISDIR]-
The named file is an existing directory.
[EMFILE]-
NOFiles file descriptors are currently open.
[EMULTIHOP]-
Components of path require hopping to multiple remote machines.
[ENFILE]-
The system file table is full.
[ENOENT]-
-
A component of the path prefix does not exist.
-
The pathname is null.
[ENOLINK]-
path points to a remote machine and the link
to that machine is no longer active.
[ENOSPC]-
The filesystem is out of inodes.
[ENOTDIR]-
A component of the path prefix is not a directory.
[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.
Diagnostics
Upon successful completion, a non-negative integer,
namely the file descriptor, is returned.
Otherwise, a value of -1 is returned, and
errno is set to indicate the error.
See also
chmod(S-osr5),
close(S-osr5),
dup(S-osr5),
fcntl(S-osr5),
lseek(S-osr5),
open(S-osr5),
read(S-osr5),
umask(S-osr5),
write(S-osr5)
Standards conformance
creat is conformant with:
X/Open Portability Guide, Issue 3, 1989
;
Intel386 Binary Compatibility Specification, Edition 2 (iBCSe2)
;
IEEE POSIX Std 1003.1-1990 System Application Program Interface (API) [C Language] (ISO/IEC 9945-1)
;
and
NIST FIPS 151-1
.
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 02 June 2005