creat(2)                                                              creat(2)


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);

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 to the group ID of the directory in which the
     file is being created.  This is determined as follows:
          If the underlying filesystem was mounted with the BSD file creation
          semantics flag [see fstab(4)] or the S_ISGID bit is set [see
          chmod(2)] on the parent directory, then the group ID of the new file
          is set to the group ID of the parent directory, otherwise it is set
          to the effective group ID of the calling process.

     The mode bits of the file are based on 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 S_ISGID 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) for the values of mode]

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

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

     EACCES Search permission is denied on a component of the path prefix.

     EACCES The file does not exist and write permission on the directory in
            which the file is to be created is denied.

     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.

     EFBIG  The file does not exist and the file size limit of the process is
            set to 0 [see getrlimit(2)].

     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 {PATH_MAX}, or the length
            of a path component exceeds {NAME_MAX} while _POSIX_NO_TRUNC is in
            effect.

     ENOTDIRA component of the path prefix is not a directory.

     ENOENT A component of the path prefix does not exist.

     ENOENT The path name is null.

     EROFS  The named file resides or would reside on a read-only file system.

     ENFILE The system file table is full.

     ENOSPC The file system is out of inodes.

     ETIMEDOUT
            The object of the write is located on a remote system which is not
            available [see intro(2)].

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


DIAGNOSTICS
     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.


                                                                        Page 3