[Go to CFHT Home Page] Man Pages
Back to Software Index  BORDER=0Manpage Top Level
    creat(2) manual page Table of Contents

Name

creat - 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, mode_t mode);

MT-Level

Async-Signal-Safe

Description

creat() 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.

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 effective group ID of the process, or if the S_ISGID 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:

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 functions (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, O_WRONLY | O_CREAT | O_TRUNC, mode)

Return Values

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.

Errors

creat() fails if one or more of the following are true:

EACCES
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(2) ).
EDQUOT
The directory where the new file entry is being placed cannot be extended because the user’s quota of disk blocks on that file system has been exhausted.
The user’s quota of inodes on the file system where
the file is being created has been exhausted.
EFAULT
path points to an illegal address.
EINTR
A signal was caught during the creat() function.
EISDIR
The named file is an existing directory.
ELOOP
Too many symbolic links were encountered in translating path.
EMFILE
The process has too many open files (see getrlimit(2) ).
EMULTIHOP
Components of path require hopping to multiple remote machines.
ENAMETOOLONG
The length of the path argument exceeds {PATH_MAX}, or the length of a path component exceeds {NAME_MAX} while {_POSIX_NO_TRUNC} is in effect.
ENFILE
The system file table is full.
ENOENT
A component of the path prefix does not exist.
The path name is null.
ENOLINK
path points to a remote machine and the link to that machine is no longer active.
ENOSPC
The file system 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.

See Also

chmod(2) , close(2) , dup(2) , fcntl(2) , getrlimit(2) , lseek(2) , open(2) , read(2) , umask(2) , write(2) , stat(5)


Table of Contents