This article needs additional citations for
verification. (February 2024) |
C POSIX library |
---|
|
In the
C and
C++ programming languages, unistd.h
is the name of the
header file that provides access to the
POSIX
operating system
API.
[1] It is defined by the POSIX.1 standard, the base of the
Single Unix Specification, and should therefore be available in any POSIX-compliant operating system and
compiler. For instance, this includes
Unix and
Unix-like operating systems, such as
GNU variants, distributions of
Linux and
BSD, and
macOS, and compilers such as
GCC and
LLVM.
On Unix-like systems, the interface defined by unistd.h
is typically made up largely of
system call wrapper functions such as
fork
,
pipe
and
I/O primitives (read
, write
, close
, etc.).
Unix compatibility layers such as
Cygwin and
MinGW also provide their own versions of unistd.h. In fact, those systems provide it along with the translation libraries that implement its functions in terms of win32 functions. E.g. In Cygwin, a header file can be found in /usr/include
that sub-includes a file of the same name in /usr/include/sys
. Not everything is defined in there but some definitions are done by references to the GNU C standard library headers (like
stddef.h) which provide the type
size_t and many more. Thus, unistd.h is only a generically defined adaptive layer that might be based upon already existing system and compiler specific definitions. This has the general advantage of not having a possibly concurrent set of header file defined, but one that is built upon the same root which, for this reason, will raise much fewer concerns in combined usage cases.
Function | Description | |
---|---|---|
crypt
|
password and data encryption | |
encrypt
|
encrypt 64-byte messages | |
gethostid
|
get the unique identifier of the current host | |
gethostname
|
get hostname | |
getopt
|
parse command-line options | |
swab
|
swap adjacent bytes | |
sysconf
|
get configuration at run time | |
Signals |
alarm
|
schedule an alarm signal |
pause
|
wait for signal | |
Filesystem |
access
faccessat
faccessat2
|
check user's permissions for a file or whether it exists |
chdir
fchdir
|
change working directory | |
chown
fchown
lchown
fchownat
|
change owner and group of a file | |
close
|
close a file descriptor | |
dup
dup2
|
duplicate a file descriptor | |
fsync
fdatasync
|
synchronize a file's in-core state with storage device | |
fpathconf
pathconf
|
get configuration values for files | |
ftruncate
truncate
|
truncate a file to a specified length | |
getcwd
getwd
get_current_dir_name |
get current working directory | |
isatty
|
test whether a file descriptor refers to a terminal | |
link
linkat
|
make a new name for a file | |
lockf
|
apply, test or remove a POSIX lock on an open file | |
lseek
|
reposition read/write file offset | |
pipe
pipe2
|
create pipe | |
pread
pwrite
|
read from or write to a file descriptor at a given offset | |
read
|
read from a file descriptor | |
readlink
readlinkat
|
read value of a symbolic link | |
rmdir
|
delete a directory | |
symlink
symlinkat
|
make a new name for a file | |
sync
syncfs
|
commit filesystem caches to disk | |
ttyname
ttyname_r
|
return name of a terminal | |
unlink
unlinkat
|
delete a name and possibly the file it refers to | |
write
|
write to a file descriptor | |
Process |
_exit
|
terminate the calling process |
execl
execlp
execle
execv
execvp
execvpe
|
execute a file | |
fexecve
|
execute program specified via file descriptor | |
fork
|
create a new process | |
setpgid
getpgid
setpgrp
getpgrp |
set/get process group | |
getpid
getppid
|
get process identification | |
getsid
|
get session ID | |
nice
|
change process priority | |
setsid
|
creates a session and sets the process group ID | |
sleep
|
sleep for a specified number of seconds | |
tcgetpgrp
tcsetpgrp
|
get and set terminal foreground process group | |
User/Group |
getgid
getegid
|
get group identity |
getuid
geteuid
|
get user identity | |
getgroups
|
get list of supplementary group IDs | |
getlogin
getlogin_r
|
get username | |
seteuid
setegid
|
set effective user or group ID | |
setgid
|
set group identity | |
setreuid
setregid
|
set real and/or effective user or group ID | |
setuid
|
set user identity |
This article needs additional citations for
verification. (February 2024) |
C POSIX library |
---|
|
In the
C and
C++ programming languages, unistd.h
is the name of the
header file that provides access to the
POSIX
operating system
API.
[1] It is defined by the POSIX.1 standard, the base of the
Single Unix Specification, and should therefore be available in any POSIX-compliant operating system and
compiler. For instance, this includes
Unix and
Unix-like operating systems, such as
GNU variants, distributions of
Linux and
BSD, and
macOS, and compilers such as
GCC and
LLVM.
On Unix-like systems, the interface defined by unistd.h
is typically made up largely of
system call wrapper functions such as
fork
,
pipe
and
I/O primitives (read
, write
, close
, etc.).
Unix compatibility layers such as
Cygwin and
MinGW also provide their own versions of unistd.h. In fact, those systems provide it along with the translation libraries that implement its functions in terms of win32 functions. E.g. In Cygwin, a header file can be found in /usr/include
that sub-includes a file of the same name in /usr/include/sys
. Not everything is defined in there but some definitions are done by references to the GNU C standard library headers (like
stddef.h) which provide the type
size_t and many more. Thus, unistd.h is only a generically defined adaptive layer that might be based upon already existing system and compiler specific definitions. This has the general advantage of not having a possibly concurrent set of header file defined, but one that is built upon the same root which, for this reason, will raise much fewer concerns in combined usage cases.
Function | Description | |
---|---|---|
crypt
|
password and data encryption | |
encrypt
|
encrypt 64-byte messages | |
gethostid
|
get the unique identifier of the current host | |
gethostname
|
get hostname | |
getopt
|
parse command-line options | |
swab
|
swap adjacent bytes | |
sysconf
|
get configuration at run time | |
Signals |
alarm
|
schedule an alarm signal |
pause
|
wait for signal | |
Filesystem |
access
faccessat
faccessat2
|
check user's permissions for a file or whether it exists |
chdir
fchdir
|
change working directory | |
chown
fchown
lchown
fchownat
|
change owner and group of a file | |
close
|
close a file descriptor | |
dup
dup2
|
duplicate a file descriptor | |
fsync
fdatasync
|
synchronize a file's in-core state with storage device | |
fpathconf
pathconf
|
get configuration values for files | |
ftruncate
truncate
|
truncate a file to a specified length | |
getcwd
getwd
get_current_dir_name |
get current working directory | |
isatty
|
test whether a file descriptor refers to a terminal | |
link
linkat
|
make a new name for a file | |
lockf
|
apply, test or remove a POSIX lock on an open file | |
lseek
|
reposition read/write file offset | |
pipe
pipe2
|
create pipe | |
pread
pwrite
|
read from or write to a file descriptor at a given offset | |
read
|
read from a file descriptor | |
readlink
readlinkat
|
read value of a symbolic link | |
rmdir
|
delete a directory | |
symlink
symlinkat
|
make a new name for a file | |
sync
syncfs
|
commit filesystem caches to disk | |
ttyname
ttyname_r
|
return name of a terminal | |
unlink
unlinkat
|
delete a name and possibly the file it refers to | |
write
|
write to a file descriptor | |
Process |
_exit
|
terminate the calling process |
execl
execlp
execle
execv
execvp
execvpe
|
execute a file | |
fexecve
|
execute program specified via file descriptor | |
fork
|
create a new process | |
setpgid
getpgid
setpgrp
getpgrp |
set/get process group | |
getpid
getppid
|
get process identification | |
getsid
|
get session ID | |
nice
|
change process priority | |
setsid
|
creates a session and sets the process group ID | |
sleep
|
sleep for a specified number of seconds | |
tcgetpgrp
tcsetpgrp
|
get and set terminal foreground process group | |
User/Group |
getgid
getegid
|
get group identity |
getuid
geteuid
|
get user identity | |
getgroups
|
get list of supplementary group IDs | |
getlogin
getlogin_r
|
get username | |
seteuid
setegid
|
set effective user or group ID | |
setgid
|
set group identity | |
setreuid
setregid
|
set real and/or effective user or group ID | |
setuid
|
set user identity |