NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | USAGE | ATTRIBUTES | SUMMARY OF TRUSTED SOLARIS CHANGES | SEE ALSO
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int creat(const char *path, mode_t mode);
The creat() function 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:
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. The calling process may assert the PRIV_FILE_SETID
privilege to override clearing of the S_ISGID bit.
All bits set in the process's file mode creation mask (see umask(2)) are correspondingly cleared in the file's permission mask.
The "save text image after execution bit" of the mode is cleared. [See chmod(2)
for the values of mode.] The calling process may assert the PRIV_SYS_CONFIG
privilege to override the clearing of the S_ISVTX bit.
If the file exists, its sensitivity label is unchanged. If the file does not exist, it is created with its sensitivity label set to the sensitivity label of the calling process.
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)
Upon successful completion, a non-negative integer representing the lowest numbered unused file descriptor is returned. Otherwise, -1 is returned, no files are created or modified, and errno is set to indicate the error.
The creat() function will fail:
Search permission is denied on a component of the path prefix. To override this restriction, the calling process may assert one or both of these privileges: PRIV_FILE_DAC_SEARCH
and PRIV_FILE_MAC_SEARCH
.
The file does not exist and the directory in which the file is to be created does not permit writing. To override this restriction, the calling process may assert one or both of these privileges: PRIV_FILE_DAC_WRITE
and PRIV_FILE_MAC_WRITE
.
The file exists and write permission to path is denied. To override this restriction, the calling process may assert one or both of these privileges: PRIV_FILE_MAC_WRITE
and PRIV_FILE_DAC_WRITE
.
The file exists, mandatory file/record locking is set, and there are outstanding record locks on the file. [See chmod(2).]
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, or the user's quota of inodes on the file system where the file is being created has been exhausted.
The path argument points to an illegal address.
A signal was caught during the execution of the creat() function.
The named file is an existing directory.
Too many symbolic links were encountered in translating path.
The process has too many open files. [See getrlimit(2).]
The system file table is full.
A component of the path prefix does not exist, or the path name is null.
The path argument points to a remote machine and the link to that machine is no longer active.
The file system is out of inodes.
A component of the path prefix is not a directory.
The file is a large file at the time of creat().
The named file resides or would reside on a read-only file system.
The creat() function has a transitional interface for 64-bit file offsets. See lf64(5).
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
MT-Level | Async-Signal-Safe |
Appropriate privilege is required to override access checks.
To override clearing of the S_ISVTX bit, the calling process may assert the PRIV_SYS_CONFIG
privilege. To override the clearing of the S_ISGID bit, the calling process may assert the PRIV_FILE_SETID
privilege.
If path exists, its sensitivity label is unchanged. If path does not exist, it is created with its sensitivity label set to the sensitivity label of the calling process.
Information labels (ILs) are not supported in Trusted Solaris 7 and later releases. Trusted Solaris software interprets any ILs on communications and files from systems running earlier releases as ADMIN_LOW
.
Objects still have CMW labels, and CMW labels still include the IL component: IL[SL]; however, the IL component is fixed at ADMIN_LOW
.
As a result, Trusted Solaris 7 has the following characteristics:
ILs do not display in window labels; SLs (Sensitivity Labels) display alone within brackets.
ILs do not float.
Setting an IL on an object has no effect.
Getting an object's IL will always return ADMIN_LOW
.
Although certain utilities, library functions, and system calls can manipulate IL strings, the resulting ILs are always ADMIN_LOW
, and cannot be set on any objects.
Options related to information labels in the label_encodings(4) file can be ignored:
Markings Name= Marks; Float Process Information Label;
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | USAGE | ATTRIBUTES | SUMMARY OF TRUSTED SOLARIS CHANGES | SEE ALSO