HP-UX Reference (11i v3 07/02) - 2 System Calls (vol 5)

c
creat(2) creat(2)
NAME
creat - create a new file or rewrite an existing one
SYNOPSIS
#include <fcntl.h>
int creat(const char *path, mode_t mode);
DESCRIPTION
The creat() system call creates a new regular file or prepares to rewrite an existing file named by the
path name pointed to by path.
If the file exists, its length is truncated to 0, and its mode and owner are unchanged. Otherwise, the file’s
owner ID is set to the effective user ID of the process. If the set-group-ID bit of the parent directory is set,
the files group ID is set to the group ID of the parent directory. Otherwise, the file’s group ID is set to the
process’s effective group ID. 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(2)).
The "save text image after execution" bit of the mode is cleared (see chmod(2)).
If the system call is made in 64 bit mode, the
O_LARGEFILE status flag is automatically set (see fcntl(5)
or open(2)).
Upon successful completion, the file descriptor is returned and the file is open for writing (only), even if the
mode does not permit writing. The file offset is set to the beginning of the file. The file descriptor is set to
remain open across
exec*() system calls (see fcntl(2)). Each process has a limit on how many files it can
open simultaneously. Refer to getrlimit (2) for the open files limit. This is also discussed in open(2). A new
file can be created with a mode that forbids writing.
Access Control Lists - HFS File Systems Only
On HFS file systems that support access control lists, three base ACL entries are created corresponding to
the file access permission bits. An existing file’s access control list is unchanged by
creat() (see setacl(2),
chmod(2), and acl(5)).
Access Control Lists - JFS File Systems Only
On JFS file systems that support access control lists, optional ACL entries are created corresponding to the
parent directory’s default ACL entries. An existing file’s access control list is unchanged by
creat() (see
acl(2), chmod(2), and aclv(5)).
RETURN VALUE
creat() returns the following values:
n Successful completion. n is the value of the file descriptor. It is nonnegative.
-1 Failure. errno is set to indicate the error.
ERRORS
If creat() fails, errno is set to one of the following values:
[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 per-
mit writing.
[EACCES] The file exists and write permission is denied.
[EAGAIN] The file exists, enforcement mode file and record locking is set and there are outstand-
ing record locks on the file.
[EDQUOT] User’s or group’s disk quota block or inode limit has been reached for this file system.
[EFAULT] path points outside the allocated address space of the process. The reliable detection
of this error is implementation dependent.
[EISDIR] The named file is an existing directory.
[ELOOP] Too many symbolic links were encountered in translating the path name.
82 Hewlett-Packard Company 1 HP-UX 11i Version 3: February 2007