Особенности реализации POSIX

В KasperskyOS реализация некоторых интерфейсов POSIX в части, которая не определяется стандартом POSIX.1-2008, отличается от реализации этих интерфейсов в Linux и других UNIX-подобных операционных системах. Сведения об этих интерфейсах приведены в таблице ниже.

Интерфейсы POSIX с особенностями реализации

Интерфейс

Назначение

Реализация

Заголовочный файл по стандарту POSIX.1-2008

bind()

Назначить имя сокету.

При использовании версии VFS, которая поддерживает только сетевые операции, файлы сокетов семейства AF_UNIX при вызове bind() сохраняются в специальной файловой системе, реализуемой этой версией VFS. Файл сокета может быть создан только в корне файловой системы или в директории /tmp, а также может быть повторно использован после закрытия сокета.

sys/socket.h

mmap()

Отобразить в память.

Флаг MAP_FIXED в параметре flags не поддерживается.

На аппаратных платформах с процессорной архитектурой AArch64 (Arm64) нельзя выполнить отображение более 4 ГБ.

sys/mman.h

read()

Выполнить чтение из файла.

Если размер буфера buf превышает размер считанных данных, то оставшаяся часть этого буфера заполняется нулями.

unistd.h

poll()

Отслеживать состояние файловых дескрипторов.

Не поддерживается комбинация из недействительных файловых дескрипторов (например, закрытых, недоступных или с некорректными значениями) и отрицательного значения параметра timeout (неограниченное время ожидания). В этом случае функция возвращает -1, а errno устанавливается в EINVAL.

sys/poll.h

select()

Отслеживать состояние файловых дескрипторов.

Вызов функции с нулевыми значениями всех параметров не поддерживается. В этом случае функция возвращает -1, а errno устанавливается в EINVAL.

sys/select.h

fcntl()

Выполнить операции с файловым дескриптором.

Поддерживаются специфичные для Linux макросы F_SETPIPE_SZ и F_GETPIPE_SZ.

fcntl.h

В KasperskyOS переменная errno может принимать значения как стандартных кодов ошибок POSIX, так и специфичных для KasperskyOS. О кодах ошибок, специфичных для KasperskyOS, см. "Коды возврата".

В начало