POSIXOPTIONS(7)

ИМЯ
posixoptions - необязательные части стандарта POSIX

ОПИСАНИЕ
В стандарте POSIX (информация взята POSIX.1-2001) описан набор правил работы и интерфейсы, требуемый от совместимой системы. Однако много интерфейсов являются необязательными и имеется набор макросов тестирования свойств для проверки доступности интерфейсов во время компиляции, а также есть функции sysconf(3), fpathconf(3), pathconf(3), confstr(3), которые выполняют проверки во время выполнения. Из сценариев оболочки можно использовать getconf(1). Подробности смотрите в sysconf(3).

Мы приводим имя из POSIX, свойство, имя параметра sysconf(3), который используется для запроса этого свойство, и возможно, очень краткое описание. Более полную информацию можно найти в самом стандарте POSIX, из версий, которые теперь свободно доступны через веб.

  ADV - _POSIX_ADVISORY_INFO - _SC_ADVISORY_INFO
Доступны следующие консультативные функции:

posix_fadvise()
posix_fallocate()
posix_memalign()
posix_madvise()

  AIO - _POSIX_ASYNCHRONOUS_IO - _SC_ASYNCHRONOUS_IO
Доступен заголовочный файл <aio.h>. Доступны следующие функции:

aio_cancel()
aio_error()
aio_fsync()
aio_read()
aio_return()
aio_suspend()
aio_write()
lio_listio()

  BAR - _POSIX_BARRIERS - _SC_BARRIERS
Это свойство подразумевает свойства _POSIX_THREADS и _POSIX_THREAD_SAFE_FUNCTIONS. Доступны следующие функции:

pthread_barrier_destroy()
pthread_barrier_init()
pthread_barrier_wait()
pthread_barrierattr_destroy()
pthread_barrierattr_init()

  --- - POSIX_CHOWN_RESTRICTED
Если действует это свойство (всегда, согласно POSIX.1-2001), то только суперпользователь может изменять владельца файла, а обычный пользователь может задать группу файла только на одну из групп, которой принадлежит. Учитывается в функциях:

chown()
fchown()

  CS - _POSIX_CLOCK_SELECTION - _SC_CLOCK_SELECTION
Это свойство подразумевает свойство _POSIX_TIMERS. Доступны следующие функции:

pthread_condattr_getclock()
pthread_condattr_setclock()
clock_nanosleep()

Если CLOCK_REALTIME изменяется функцией clock_settime(), то это влияет на все таймеры, заданные абсолютным временем.

  CPT - _POSIX_CPUTIME - _SC_CPUTIME
Поддерживается идентификатор часов CLOCK_PROCESS_CPUTIME_ID. Начальное значение этих часов равно нулю для каждого процесса. Данное свойство подразумевает свойство _POSIX_TIMERS. Доступна функция clock_getcpuclockid().

  --- - _POSIX_FILE_LOCKING - _SC_FILE_LOCKING
Эта функция была удалена. Нет в окончательной XPG6.

  FSC - _POSIX_FSYNC - _SC_FSYNC
Доступна функция fsync().

  IP6 - _POSIX_IPV6 - _SC_IPV6
Поддерживается Internet Protocol Version 6.

  --- - _POSIX_JOB_CONTROL - _SC_JOB_CONTROL
Если доступно это свойство (всегда в POSIX.1-2001), то в системе реализовано управление заданиями в стиле POSIX и доступны следующие функции:

setpgid()
tcdrain()
tcflush()
tcgetpgrp()
tcsendbreak()
tcsetattr()
tcsetpgrp()

  MF - _POSIX_MAPPED_FILES - _SC_MAPPED_FILES
Поддерживается общая память. Доступен заголовочный файл <sys/mman.h>. Доступны следующие функции:

mmap()
msync()
munmap()

  ML - _POSIX_MEMLOCK - _SC_MEMLOCK
Общая память может блокироваться в ядре (core). Доступны следующие функции:

mlockall()
munlockall()

  MR/MLR - _POSIX_MEMLOCK_RANGE - _SC_MEMLOCK_RANGE
Более точно, диапазоны могут блокироваться в ядре (core). Доступны следующие функции:

mlock()
munlock()

  MPR - _POSIX_MEMORY_PROTECTION - _SC_MEMORY_PROTECTION
Доступна функция mprotect().

  MSG - _POSIX_MESSAGE_PASSING - _SC_MESSAGE_PASSING
Доступен заголовочный файл <mqueue.h>. Доступны следующие функции:

mq_close()
mq_getattr()
mq_notify()
mq_open()
mq_receive()
mq_send()
mq_setattr()
mq_unlink()

  MON - _POSIX_MONOTONIC_CLOCK - _SC_MONOTONIC_CLOCK
Поддерживается CLOCK_MONOTONIC. Это свойство подразумевает свойство _POSIX_TIMERS. Влияет на следующие функции:

aio_suspend()
clock_getres()
clock_gettime()
clock_settime()
timer_create()

  --- - _POSIX_MULTI_PROCESS - _SC_MULTI_PROCESS
Эта функция была удалена. Нет в окончательной XPG6.

  --- - _POSIX_NO_TRUNC
Если доступно это свойство (всегда в POSIX.1-2001), то компоненты пути длиннее чем NAME_MAX не обрезаются, а выдаётся ошибка. Данное свойство может зависеть от префикса компонента пути.

  PIO - _POSIX_PRIORITIZED_IO - _SC_PRIORITIZED_IO
Это свойство показывает, то можно задавать приоритеты для асинхронного ввода-вывода. Влияет на следующие функции:

aio_read()
aio_write()

  PS - _POSIX_PRIORITY_SCHEDULING - _SC_PRIORITY_SCHEDULING
Доступен заголовочный файл <sched.h>. Доступны следующие функции:

sched_get_priority_max()
sched_get_priority_min()
sched_getparam()
sched_getscheduler()
sched_rr_get_interval()
sched_setparam()
sched_setscheduler()
sched_yield()

Если также доступно свойство _POSIX_SPAWN, доступны следующие функции:

posix_spawnattr_getschedparam()
posix_spawnattr_getschedpolicy()
posix_spawnattr_setschedparam()
posix_spawnattr_setschedpolicy()

  RS - _POSIX_RAW_SOCKETS
Поддерживаются неструктурированные сокеты. Влияет на следующие функции:

getsockopt()
setsockopt()

  --- - _POSIX_READER_WRITER_LOCKS - _SC_READER_WRITER_LOCKS
Это свойство подразумевает свойство _POSIX_THREADS. И наоборот, согласно POSIX.1-2001, свойство _POSIX_THREADS подразумевает это свойство.

Доступны следующие функции:

pthread_rwlock_destroy()
pthread_rwlock_init()
pthread_rwlock_rdlock()
pthread_rwlock_tryrdlock()
pthread_rwlock_trywrlock()
pthread_rwlock_unlock()
pthread_rwlock_wrlock()
pthread_rwlockattr_destroy()
pthread_rwlockattr_init()

  RTS - _POSIX_REALTIME_SIGNALS - _SC_REALTIME_SIGNALS
Доступны сигналы реального времени. Доступны следующие функции:

sigqueue()
sigtimedwait()
sigwaitinfo()

  --- - _POSIX_REGEXP - _SC_REGEXP
Если доступно это свойство (всегда в POSIX.1-2001), то поддерживаются регулярные выражения POSIX и доступны следующие функции:

regcomp()
regerror()
regexec()
regfree()

  --- - _POSIX_SAVED_IDS - _SC_SAVED_IDS
Если доступно это свойство (всегда в POSIX.1-2001), то у процесса имеются сохранённый set-user-ID и сохранённый set-group-ID. Влияет на следующие функции:

exec()
kill()
seteuid()
setegid()
setgid()
setuid()

  SEM - _POSIX_SEMAPHORES - _SC_SEMAPHORES
Доступен заголовочный файл <semaphore.h>. Доступны следующие функции:

sem_close()
sem_destroy()
sem_getvalue()
sem_init()
sem_open()
sem_post()
sem_trywait()
sem_unlink()
sem_wait()

  SHM - _POSIX_SHARED_MEMORY_OBJECTS - _SC_SHARED_MEMORY_OBJECTS
Доступны следующие функции:

mmap()
munmap()
shm_open()
shm_unlink()

  --- - _POSIX_SHELL - _SC_SHELL
Если доступно это свойство (всегда в POSIX.1-2001), то в системе доступна функция system().

  SPN - _POSIX_SPAWN - _SC_SPAWN
Данное свойство выделяет процесс создания поддержки в связи с тем, что трудно или невозможно использовать fork(), например, из-за отсутствия MMU.

Если задействовано свойство _POSIX_SPAWN, то доступен заголовочный файл <spawn.h> и следующие функции:

posix_spawn()
posix_spawn_file_actions_addclose()
posix_spawn_file_actions_adddup2()
posix_spawn_file_actions_addopen()
posix_spawn_file_actions_destroy()
posix_spawn_file_actions_init()
posix_spawnattr_destroy()
posix_spawnattr_getsigdefault()
posix_spawnattr_getflags()
posix_spawnattr_getpgroup()
posix_spawnattr_getsigmask()
posix_spawnattr_init()
posix_spawnattr_setsigdefault()
posix_spawnattr_setflags()
posix_spawnattr_setpgroup()
posix_spawnattr_setsigmask()
posix_spawnp()

Если также доступно свойство _POSIX_PRIORITY_SCHEDULING, то доступны следующие функции:

posix_spawnattr_getschedparam()
posix_spawnattr_getschedpolicy()
posix_spawnattr_setschedparam()
posix_spawnattr_setschedpolicy()

  SPI - _POSIX_SPIN_LOCKS - _SC_SPIN_LOCKS
Это свойство подразумевает свойства _POSIX_THREADS и _POSIX_THREAD_SAFE_FUNCTIONS. Доступны следующие функции:

pthread_spin_destroy()
pthread_spin_init()
pthread_spin_lock()
pthread_spin_trylock()
pthread_spin_unlock()

  SS - _POSIX_SPORADIC_SERVER - _SC_SPORADIC_SERVER
Поддерживается алгоритм планирования SCHED_SPORADIC. Это свойство подразумевает свойство _POSIX_PRIORITY_SCHEDULING. Влияет на следующие функции:

sched_setparam()
sched_setscheduler()

  SIO - _POSIX_SYNCHRONIZED_IO - _SC_SYNCHRONIZED_IO
Влияет на следующие функции:

open()
msync()
fsync()
fdatasync()

  TSA - _POSIX_THREAD_ATTR_STACKADDR - _SC_THREAD_ATTR_STACKADDR
Влияет на следующие функции:

pthread_attr_getstack()
pthread_attr_getstackaddr()
pthread_attr_setstack()
pthread_attr_setstackaddr()

  TSS - _POSIX_THREAD_ATTR_STACKSIZE - _SC_THREAD_ATTR_STACKSIZE
Влияет на следующие функции:

pthread_attr_getstack()
pthread_attr_getstacksize()
pthread_attr_setstack()
pthread_attr_setstacksize()

  TCT - _POSIX_THREAD_CPUTIME - _SC_THREAD_CPUTIME
Поддерживается идентификатор часов CLOCK_THREAD_CPUTIME_ID. Это свойство подразумевает свойство _POSIX_TIMERS. Влияет на следующие функции:

pthread_getcpuclockid()
clock_getres()
clock_gettime()
clock_settime()
timer_create()

  TPI - _POSIX_THREAD_PRIO_INHERIT - _SC_THREAD_PRIO_INHERIT
Влияет на следующие функции:

pthread_mutexattr_getprotocol()
pthread_mutexattr_setprotocol()

  TPP - _POSIX_THREAD_PRIO_PROTECT - _SC_THREAD_PRIO_PROTECT
Влияет на следующие функции:

pthread_mutex_getprioceiling()
pthread_mutex_setprioceiling()
pthread_mutexattr_getprioceiling()
pthread_mutexattr_getprotocol()
pthread_mutexattr_setprioceiling()
pthread_mutexattr_setprotocol()

  TPS - _POSIX_THREAD_PRIORITY_SCHEDULING - _SC_THREAD_PRIORITY_SCHEDULING
Если доступно это свойство, то нити в процессе можно выполнять с разными приоритетами или планировщиками. Влияет на следующие функции:

pthread_attr_getinheritsched()
pthread_attr_getschedpolicy()
pthread_attr_getscope()
pthread_attr_setinheritsched()
pthread_attr_setschedpolicy()
pthread_attr_setscope()
pthread_getschedparam()
pthread_setschedparam()
pthread_setschedprio()

  TSH - _POSIX_THREAD_PROCESS_SHARED - _SC_THREAD_PROCESS_SHARED
Влияет на следующие функции:

pthread_barrierattr_getpshared()
pthread_barrierattr_setpshared()
pthread_condattr_getpshared()
pthread_condattr_setpshared()
pthread_mutexattr_getpshared()
pthread_mutexattr_setpshared()
pthread_rwlockattr_getpshared()
pthread_rwlockattr_setpshared()

  TSF - _POSIX_THREAD_SAFE_FUNCTIONS - _SC_THREAD_SAFE_FUNCTIONS
Влияет на следующие функции:

readdir_r()
getgrgid_r()
getgrnam_r()
getpwnam_r()
getpwuid_r()
flockfile()
ftrylockfile()
funlockfile()
getc_unlocked()
getchar_unlocked()
putc_unlocked()
putchar_unlocked()
rand_r()
strerror_r()
strtok_r()
asctime_r()
ctime_r()
gmtime_r()
localtime_r()

  TSP - _POSIX_THREAD_SPORADIC_SERVER - _SC_THREAD_SPORADIC_SERVER
Это свойство подразумевает свойство _POSIX_THREAD_PRIORITY_SCHEDULING. Влияет на следующие функции:

sched_getparam()
sched_setparam()
sched_setscheduler()

  THR - _POSIX_THREADS - _SC_THREADS
Доступна начальная поддержка нитей POSIX. Доступны следующие функции:

pthread_atfork()
pthread_attr_destroy()
pthread_attr_getdetachstate()
pthread_attr_getschedparam()
pthread_attr_init()
pthread_attr_setdetachstate()
pthread_attr_setschedparam()
pthread_cancel()
pthread_cleanup_push()
pthread_cleanup_pop()
pthread_cond_broadcast()
pthread_cond_destroy()
pthread_cond_init()
pthread_cond_signal()
pthread_cond_timedwait()
pthread_cond_wait()
pthread_condattr_destroy()
pthread_condattr_init()
pthread_create()
pthread_detach()
pthread_equal()
pthread_exit()
pthread_getspecific()
pthread_join()
pthread_key_create()
pthread_key_delete()
pthread_mutex_destroy()
pthread_mutex_init()
pthread_mutex_lock()
pthread_mutex_trylock()
pthread_mutex_unlock()
pthread_mutexattr_destroy()
pthread_mutexattr_init()
pthread_once()
pthread_rwlock_destroy()
pthread_rwlock_init()
pthread_rwlock_rdlock()
pthread_rwlock_tryrdlock()
pthread_rwlock_trywrlock()
pthread_rwlock_unlock()
pthread_rwlock_wrlock()
pthread_rwlockattr_destroy()
pthread_rwlockattr_init()
pthread_self()
pthread_setcancelstate()
pthread_setcanceltype()
pthread_setspecific()
pthread_testcancel()

  TMO - _POSIX_TIMEOUTS - _SC_TIMEOUTS
Доступны следующие функции:

mq_timedreceive()
mq_timedsend()
pthread_mutex_timedlock()
pthread_rwlock_timedrdlock()
pthread_rwlock_timedwrlock()
sem_timedwait()
posix_trace_timedgetnext_event()

  TMR - _POSIX_TIMERS - _SC_TIMERS
Доступны следующие функции:

clock_getres()
clock_gettime()
clock_settime()
nanosleep()
timer_create()
timer_delete()
timer_gettime()
timer_getoverrun()
timer_settime()

  TRC - _POSIX_TRACE - _SC_TRACE
Доступна поддержка трассировки POSIX. Доступны следующие функции:

posix_trace_attr_destroy()
posix_trace_attr_getclockres()
posix_trace_attr_getcreatetime()
posix_trace_attr_getgenversion()
posix_trace_attr_getmaxdatasize()
posix_trace_attr_getmaxsystemeventsize()
posix_trace_attr_getmaxusereventsize()
posix_trace_attr_getname()
posix_trace_attr_getstreamfullpolicy()
posix_trace_attr_getstreamsize()
posix_trace_attr_init()
posix_trace_attr_setmaxdatasize()
posix_trace_attr_setname()
posix_trace_attr_setstreamsize()
posix_trace_attr_setstreamfullpolicy()
posix_trace_clear()
posix_trace_create()
posix_trace_event()
posix_trace_eventid_equal()
posix_trace_eventid_get_name()
posix_trace_eventid_open()
posix_trace_eventtypelist_getnext_id()
posix_trace_eventtypelist_rewind()
posix_trace_flush()
posix_trace_get_attr()
posix_trace_get_status()
posix_trace_getnext_event()
posix_trace_shutdown()
posix_trace_start()
posix_trace_stop()
posix_trace_trygetnext_event()

  TEF - _POSIX_TRACE_EVENT_FILTER - _SC_TRACE_EVENT_FILTER
Это свойство подразумевает свойство _POSIX_TRACE. Доступны следующие функции:

posix_trace_eventset_add()
posix_trace_eventset_del()
posix_trace_eventset_empty()
posix_trace_eventset_fill()
posix_trace_eventset_ismember()
posix_trace_get_filter()
posix_trace_set_filter()
posix_trace_trid_eventid_open()

  TRI - _POSIX_TRACE_INHERIT - _SC_TRACE_INHERIT
Поддерживается трассировка потомков трассируемого процесса. Это свойство подразумевает свойство _POSIX_TRACE. Доступны следующие функции:

posix_trace_attr_getinherited()
posix_trace_attr_setinherited()

  TRL - _POSIX_TRACE_LOG - _SC_TRACE_LOG
Это свойство подразумевает свойство _POSIX_TRACE. Доступны следующие функции:

posix_trace_attr_getlogfullpolicy()
posix_trace_attr_getlogsize()
posix_trace_attr_setlogfullpolicy()
posix_trace_attr_setlogsize()
posix_trace_close()
posix_trace_create_withlog()
posix_trace_open()
posix_trace_rewind()

  TYM - _POSIX_TYPED_MEMORY_OBJECTS - _SC_TYPED_MEMORY_OBJECT
Доступны следующие функции:

posix_mem_offset()
posix_typed_mem_get_info()
posix_typed_mem_open()

  --- - _POSIX_VDISABLE
Имеется всегда (вероятное значение — 0). Присвоение значения специального управляющего символа означает выключение.

РАСШИРЕНИЯ X/OPEN SYSTEM INTERFACE

  XSI - _XOPEN_CRYPT - _SC_XOPEN_CRYPT
Доступны следующие функции:

crypt()
encrypt()
setkey()

  XSI - _XOPEN_REALTIME - _SC_XOPEN_REALTIME
Это свойство подразумевает следующие свойства:

_POSIX_ASYNCHRONOUS_IO==200112L
_POSIX_FSYNC
_POSIX_MAPPED_FILES
_POSIX_MEMLOCK==200112L
_POSIX_MEMLOCK_RANGE==200112L
_POSIX_MEMORY_PROTECTION
_POSIX_MESSAGE_PASSING==200112L
_POSIX_PRIORITIZED_IO
_POSIX_PRIORITY_SCHEDULING==200112L
_POSIX_REALTIME_SIGNALS==200112L
_POSIX_SEMAPHORES==200112L
_POSIX_SHARED_MEMORY_OBJECTS==200112L
_POSIX_SYNCHRONIZED_IO==200112L
_POSIX_TIMERS==200112L

  ADV - --- - ---
Группа свойств Advanced Realtime подразумевает, что все следующие свойства определены до 200112L:

_POSIX_ADVISORY_INFO
_POSIX_CLOCK_SELECTION
    (подразумевает _POSIX_TIMERS)
_POSIX_CPUTIME
    (подразумевает _POSIX_TIMERS)
_POSIX_MONOTONIC_CLOCK
    (подразумевает _POSIX_TIMERS)
_POSIX_SPAWN
_POSIX_SPORADIC_SERVER
    (подразумевает _POSIX_PRIORITY_SCHEDULING)
_POSIX_TIMEOUTS
_POSIX_TYPED_MEMORY_OBJECTS

  XSI - _XOPEN_REALTIME_THREADS - _SC_XOPEN_REALTIME_THREADS
Это свойство подразумевает, что все следующие свойства определены до 200112L:

_POSIX_THREAD_PRIO_INHERIT
_POSIX_THREAD_PRIO_PROTECT
_POSIX_THREAD_PRIORITY_SCHEDULING

  ADVANCED REALTIME THREADS - --- - ---
Это свойство подразумевает, что все следующие свойства определены до 200112L:

_POSIX_BARRIERS
    (подразумевает _POSIX_THREADS, _POSIX_THREAD_SAFE_FUNCTIONS)
_POSIX_SPIN_LOCKS
    (подразумевает _POSIX_THREADS, _POSIX_THREAD_SAFE_FUNCTIONS)
_POSIX_THREAD_CPUTIME
    (подразумевает _POSIX_TIMERS)
_POSIX_THREAD_SPORADIC_SERVER
    (подразумевает _POSIX_THREAD_PRIORITY_SCHEDULING)

  TRACING - --- - ---
Это свойство подразумевает, что все следующие свойства определены до 200112L:

_POSIX_TRACE
_POSIX_TRACE_EVENT_FILTER
_POSIX_TRACE_LOG
_POSIX_TRACE_INHERIT

  STREAMS - _XOPEN_STREAMS - _SC_XOPEN_STREAMS
Доступны следующие функции:

fattach()
fdetach()
getmsg()
getpmsg()
ioctl()
isastream()
putmsg()
putpmsg()

  XSI - _XOPEN_LEGACY - _SC_XOPEN_LEGACY
Функции, включённые в группу устаревших свойств, которые были обязательны ранее, но в этой версии стали необязательными. Это относится к следующим функциям:

bcmp()
bcopy()
bzero()
ecvt()
fcvt()
ftime()
gcvt()
getcwd()
index()
mktemp()
rindex()
utimes()
wcswcs()

  XSI - _XOPEN_UNIX - _SC_XOPEN_UNIX
Доступны следующие функции:

mmap()
munmap()
msync()

Это свойство подразумевает следующие свойства:

_POSIX_FSYNC
_POSIX_MAPPED_FILES
_POSIX_MEMORY_PROTECTION
_POSIX_THREAD_ATTR_STACKADDR
_POSIX_THREAD_ATTR_STACKSIZE
_POSIX_THREAD_PROCESS_SHARED
_POSIX_THREAD_SAFE_FUNCTIONS
_POSIX_THREADS

Это свойство может подразумевать следующие свойства из групп свойств XSI:

Шифрование (_XOPEN_CRYPT)
Realtime (_XOPEN_REALTIME)
Advanced Realtime (ADB)
Realtime Threads (_XOPEN_REALTIME_THREADS)
Advanced Realtime Threads (ADVANCED REALTIME THREADS)
Tracing (TRACING)
XSI Streams (STREAMS)
Legacy (_XOPEN_LEGACY)

СМОТРИТЕ ТАКЖЕ
sysconf(3), standards(7)