Unistd.h (original) (raw)

From Wikipedia, the free encyclopedia

POSIX C header

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](/wiki/Fork%5F%28operating%5Fsystem%29 "Fork (operating system)"), [pipe](/wiki/Pipeline%5F%28Unix%29 "Pipeline (Unix)") 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.

Overview of functions

[edit]

| | 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 | accessfaccessatfaccessat2 | check user's permissions for a file or whether it exists | | chdirfchdir | change working directory | | | chownfchownlchownfchownat | change owner and group of a file | | | close | close a file descriptor | | | dupdup2 | duplicate a file descriptor | | | fsyncfdatasync | synchronize a file's in-core state with storage device | | | fpathconfpathconf | get configuration values for files | | | ftruncatetruncate | truncate a file to a specified length | | | getcwdgetwdget_current_dir_name | get current working directory | | | isatty | test whether a file descriptor refers to a terminal | | | linklinkat | 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 | | | pipepipe2 | create pipe | | | preadpwrite | read from or write to a file descriptor at a given offset | | | read | read from a file descriptor | | | readlinkreadlinkat | read value of a symbolic link | | | rmdir | delete a directory | | | symlinksymlinkat | make a new name for a file | | | syncsyncfs | commit filesystem caches to disk | | | ttynamettyname_r | return name of a terminal | | | unlinkunlinkat | delete a name and possibly the file it refers to | | | write | write to a file descriptor | | | Process | _exit | terminate the calling process | | execlexeclpexecleexecvexecvpexecvpe | execute a file | | | fexecve | execute program specified via file descriptor | | | fork | create a new process | | | setpgidgetpgidsetpgrpgetpgrp | set/get process group | | | getpidgetppid | 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 | | | tcgetpgrptcsetpgrp | get and set terminal foreground process group | | | User/Group | getgidgetegid | get group identity | | getuidgeteuid | get user identity | | | getgroups | get list of supplementary group IDs | | | getlogingetlogin_r | get username | | | seteuidsetegid | set effective user or group ID | | | setgid | set group identity | | | setreuidsetregid | set real and/or effective user or group ID | | | setuid | set user identity | |

  1. ^ "unistd.h(0P)". POSIX Programmer's Manual. IEEE/The Open Group. 2017. Retrieved 9 February 2024.