В языках программирования C и C++, <unistd.h> — это название заголовочного файла, который предоставляет доступ к POSIX интерфейсу программирования приложений операционной системы. Он определён стандартом 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 установка идентификатора пользователя

Примечания

Ссылки

Категория:POSIX Категория:C POSIX library Категория:Статьи с примерами кода Си