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
|
ожидание сигнала | |
| Файловая система | accessfaccessatfaccessat2
|
проверка прав доступа пользователя на файл или его существования |
chdirfchdir
|
изменение рабочего каталога | |
chownfchownlchownfchownat
|
изменение владельца и группы файла | |
close
|
закрытие дескриптора файла | |
dupdup2
|
дублирование дескриптора файла | |
fsyncfdatasync
|
синхронизация состояния файла в памяти с устройством хранения | |
fpathconfpathconf
|
получение значений конфигурации для файлов | |
ftruncatetruncate
|
усечение файла до указанной длины | |
getcwdgetwdget_current_dir_name |
получение текущего рабочего каталога | |
isatty
|
проверка, ссылается ли дескриптор файла на терминал | |
linklinkat
|
создание нового имени для файла (жёсткая ссылка) | |
lockf
|
установка, проверка или снятие POSIX-блокировки с открытого файла | |
lseek
|
изменение позиции смещения для чтения/записи в файле | |
pipepipe2
|
создание канала | |
preadpwrite
|
чтение из дескриптора файла или запись в него по заданному смещению | |
read
|
чтение из дескриптора файла | |
readlinkreadlinkat
|
чтение значения символической ссылки | |
rmdir
|
удаление каталога | |
symlinksymlinkat
|
создание нового имени для файла (символическая ссылка) | |
syncsyncfs
|
запись кэшей файловой системы на диск | |
ttynamettyname_r
|
получение имени терминала | |
unlinkunlinkat
|
удаление имени и, возможно, файла, на который оно ссылается | |
write
|
запись в дескриптор файла | |
| Процессы | _exit
|
завершение вызывающего процесса |
execlexeclpexecleexecvexecvpexecvpe
|
выполнение файла | |
fexecve
|
выполнение программы, указанной через дескриптор файла | |
fork
|
создание нового процесса | |
setpgidgetpgidsetpgrpgetpgrp |
установка/получение группы процессов | |
getpidgetppid
|
получение идентификатора процесса | |
getsid
|
получение идентификатора сессии | |
nice
|
изменение приоритета процесса | |
setsid
|
создание сессии и установка идентификатора группы процессов | |
sleep
|
приостановка выполнения на указанное количество секунд | |
tcgetpgrptcsetpgrp
|
получение и установка передней группы процессов терминала | |
| Пользователь/Группа | getgidgetegid
|
получение идентификатора группы |
getuidgeteuid
|
получение идентификатора пользователя | |
getgroups
|
получение списка дополнительных идентификаторов групп | |
getlogingetlogin_r
|
получение имени пользователя | |
seteuidsetegid
|
установка эффективного идентификатора пользователя или группы | |
setgid
|
установка идентификатора группы | |
setreuidsetregid
|
установка реального и/или эффективного идентификатора пользователя или группы | |
setuid
|
установка идентификатора пользователя |
Примечания
- ↑ unistd.h(0P) // POSIX Programmer's Manual. — IEEE/The Open Group, 2017.
Ссылки
unistd.h: standard symbolic constants and types — основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)