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. 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 ) which provide the type 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

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

References

External links