unistd.h

В языках программирования C и C++, <unistd.h> — это название заголовочного файла, который предоставляет доступ к POSIX интерфейсу программирования приложений операционной системы.[1] Он определён стандартом POSIX.1, основой единой спецификации UNIX, и поэтому должен быть доступен в любой совместимой с POSIX операционной системе и компиляторе. Например, к ним относятся Unix и Unix-подобные операционные системы, такие как варианты GNU, дистрибутивы Linux и BSD, а также macOS, и компиляторы, такие как GNU Compiler Collection (GCC) и LLVM.

В Unix-подобных системах интерфейс, определённый <unistd.h>, обычно в значительной степени состоит из функций-обёрток системных вызовов, таких как fork, pipe и примитивов ввода-вывода (read, write, close и т.д.).

Среды для предоставления совместимости с Unix, такие как Cygwin и MinGW, также предоставляют свои собственные версии <unistd.h>. Фактически, эти системы предоставляют его вместе с библиотеками трансляции, которые реализуют его функции с помощью функций Win32. Например, в Cygwin заголовочный файл можно найти в /usr/include, который включает одноимённый файл из /usr/include/sys. Не всё определено там, но некоторые определения делаются путём ссылок на заголовочные файлы стандартной библиотеки GNU C (например, <stddef.h>), которые предоставляют тип size_t и многое другое. Таким образом, <unistd.h> — это лишь общий адаптивно определённый слой, который может быть основан на уже существующих, специфичных для системы и компилятора, определениях. Это имеет общее преимущество: нет необходимости определять потенциально конфликтующий набор заголовочных файлов, вместо этого строится система, основанная на одном корне, что вызовет гораздо меньше проблем в случаях совместного использования.

Обзор функций

Функция Описание
crypt Шифрование паролей и данных
encrypt шифрование 64-байтных сообщений
gethostid получение уникального идентификатора текущего хоста
gethostname получение имени хоста
getopt разбор параметров командной строки
swab обмен смежными байтами
sysconf получение конфигурации во время выполнения
Сигналы alarm установка сигнала будильника
pause ожидание сигнала
Файловая система access
faccessat
faccessat2
проверка прав доступа пользователя на файл или его существования
chdir
fchdir
изменение рабочего каталога
chown
fchown
lchown
fchownat
изменение владельца и группы файла
close закрытие дескриптора файла
dup
dup2
дублирование дескриптора файла
fsync
fdatasync
синхронизация состояния файла в памяти с устройством хранения
fpathconf
pathconf
получение значений конфигурации для файлов
ftruncate
truncate
усечение файла до указанной длины
getcwd
getwd
get_current_dir_name
получение текущего рабочего каталога
isatty проверка, ссылается ли дескриптор файла на терминал
link
linkat
создание нового имени для файла (жёсткая ссылка)
lockf установка, проверка или снятие POSIX-блокировки с открытого файла
lseek изменение позиции смещения для чтения/записи в файле
pipe
pipe2
создание канала
pread
pwrite
чтение из дескриптора файла или запись в него по заданному смещению
read чтение из дескриптора файла
readlink
readlinkat
чтение значения символической ссылки
rmdir удаление каталога
symlink
symlinkat
создание нового имени для файла (символическая ссылка)
sync
syncfs
запись кэшей файловой системы на диск
ttyname
ttyname_r
получение имени терминала
unlink
unlinkat
удаление имени и, возможно, файла, на который оно ссылается
write запись в дескриптор файла
Процессы _exit завершение вызывающего процесса
execl
execlp
execle
execv
execvp
execvpe
выполнение файла
fexecve выполнение программы, указанной через дескриптор файла
fork создание нового процесса
setpgid
getpgid
setpgrp
getpgrp
установка/получение группы процессов
getpid
getppid
получение идентификатора процесса
getsid получение идентификатора сессии
nice изменение приоритета процесса
setsid создание сессии и установка идентификатора группы процессов
sleep приостановка выполнения на указанное количество секунд
tcgetpgrp
tcsetpgrp
получение и установка передней группы процессов терминала
Пользователь/Группа getgid
getegid
получение идентификатора группы
getuid
geteuid
получение идентификатора пользователя
getgroups получение списка дополнительных идентификаторов групп
getlogin
getlogin_r
получение имени пользователя
seteuid
setegid
установка эффективного идентификатора пользователя или группы
setgid установка идентификатора группы
setreuid
setregid
установка реального и/или эффективного идентификатора пользователя или группы
setuid установка идентификатора пользователя

Примечания

  1. unistd.h(0P) // POSIX Programmer's Manual. — IEEE/The Open Group, 2017.

Ссылки