---
name: "posixoptions"
section: "7"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/posixoptions"
---

# posixoptions(7)

optional parts of the POSIX standard

## NAME

posixoptions - optional parts of the POSIX standard

## DESCRIPTION

The POSIX standard (the information below is from POSIX.1-2001) describes a set of behaviors and interfaces for a compliant system. However, many interfaces are optional and there are feature test macros to test the availability of interfaces at compile time, and functions [**sysconf**(3)](/sysconf/3.md), [**fpathconf**(3)](/fpathconf/3.md), [**pathconf**(3)](/pathconf/3.md), [**confstr**(3)](/confstr/3.md) to do this at run time. From shell scripts one can use [**getconf**(1)](/getconf/1.md). For more detail, see [**sysconf**(3)](/sysconf/3.md).

We give the name of the POSIX abbreviation, the option, the name of the [**sysconf**(3)](/sysconf/3.md) parameter used to inquire about the option, and possibly a very short description. Much more precise detail can be found in the POSIX standard itself, versions of which can nowadays be accessed freely on the web.

### ADV - \_POSIX\_ADVISORY\_INFO - \_SC\_ADVISORY\_INFO

The following advisory functions are present:

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

### AIO - \_POSIX\_ASYNCHRONOUS\_IO - \_SC\_ASYNCHRONOUS\_IO

The header *\<aio.h\>* is present. The following functions are present:

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

### BAR - \_POSIX\_BARRIERS - \_SC\_BARRIERS

This option implies the **\_POSIX\_THREADS** and **\_POSIX\_THREAD\_SAFE\_FUNCTIONS** options. The following functions are present:

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

### --- - POSIX\_CHOWN\_RESTRICTED

If this option is in effect (as it always is under POSIX.1-2001), then only root may change the owner of a file, and nonroot can set the group of a file only to one of the groups it belongs to. This affects the following functions:

```
chown()
fchown()
```

### CS - \_POSIX\_CLOCK\_SELECTION - \_SC\_CLOCK\_SELECTION

This option implies the **\_POSIX\_TIMERS** option. The following functions are present:

```
pthread_condattr_getclock()
pthread_condattr_setclock()
clock_nanosleep()
```

If **CLOCK\_REALTIME** is changed by the function *clock\_settime*(), then this affects all timers set for an absolute time.

### CPT - \_POSIX\_CPUTIME - \_SC\_CPUTIME

The **CLOCK\_PROCESS\_CPUTIME\_ID** clock ID is supported. The initial value of this clock is 0 for each process. This option implies the **\_POSIX\_TIMERS** option. The function *clock\_getcpuclockid*() is present.

### --- - \_POSIX\_FILE\_LOCKING - \_SC\_FILE\_LOCKING

This option has been deleted. Not in final XPG6.

### FSC - \_POSIX\_FSYNC - \_SC\_FSYNC

The function *fsync*() is present.

### IP6 - \_POSIX\_IPV6 - \_SC\_IPV6

Internet Protocol Version 6 is supported.

### --- - \_POSIX\_JOB\_CONTROL - \_SC\_JOB\_CONTROL

If this option is in effect (as it always is under POSIX.1-2001), then the system implements POSIX-style job control, and the following functions are present:

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

### MF - \_POSIX\_MAPPED\_FILES - \_SC\_MAPPED\_FILES

Shared memory is supported. The include file *\<sys/mman.h\>* is present. The following functions are present:

```
mmap()
msync()
munmap()
```

### ML - \_POSIX\_MEMLOCK - \_SC\_MEMLOCK

Shared memory can be locked into core. The following functions are present:

```
mlockall()
munlockall()
```

### MR/MLR - \_POSIX\_MEMLOCK\_RANGE - \_SC\_MEMLOCK\_RANGE

More precisely, ranges can be locked into core. The following functions are present:

```
mlock()
munlock()
```

### MPR - \_POSIX\_MEMORY\_PROTECTION - \_SC\_MEMORY\_PROTECTION

The function *mprotect*() is present.

### MSG - \_POSIX\_MESSAGE\_PASSING - \_SC\_MESSAGE\_PASSING

The include file *\<mqueue.h\>* is present. The following functions are present:

```
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** is supported. This option implies the **\_POSIX\_TIMERS** option. The following functions are affected:

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

### --- - \_POSIX\_MULTI\_PROCESS - \_SC\_MULTI\_PROCESS

This option has been deleted. Not in final XPG6.

### --- - \_POSIX\_NO\_TRUNC

If this option is in effect (as it always is under POSIX.1-2001), then pathname components longer than **NAME\_MAX** are not truncated, but give an error. This property may be dependent on the path prefix of the component.

### PIO - \_POSIX\_PRIORITIZED\_IO - \_SC\_PRIORITIZED\_IO

This option says that one can specify priorities for asynchronous I/O. This affects the functions

```
aio_read()
aio_write()
```

### PS - \_POSIX\_PRIORITY\_SCHEDULING - \_SC\_PRIORITY\_SCHEDULING

The include file *\<sched.h\>* is present. The following functions are present:

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

If also **\_POSIX\_SPAWN** is in effect, then the following functions are present:

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

### RS - \_POSIX\_RAW\_SOCKETS

Raw sockets are supported. The following functions are affected:

```
getsockopt()
setsockopt()
```

### --- - \_POSIX\_READER\_WRITER\_LOCKS - \_SC\_READER\_WRITER\_LOCKS

This option implies the **\_POSIX\_THREADS** option. Conversely, under POSIX.1-2001 the **\_POSIX\_THREADS** option implies this option.

The following functions are present:

```
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

Realtime signals are supported. The following functions are present:

```
sigqueue()
sigtimedwait()
sigwaitinfo()
```

### --- - \_POSIX\_REGEXP - \_SC\_REGEXP

If this option is in effect (as it always is under POSIX.1-2001), then POSIX regular expressions are supported and the following functions are present:

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

### --- - \_POSIX\_SAVED\_IDS - \_SC\_SAVED\_IDS

If this option is in effect (as it always is under POSIX.1-2001), then a process has a saved set-user-ID and a saved set-group-ID. The following functions are affected:

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

### SEM - \_POSIX\_SEMAPHORES - \_SC\_SEMAPHORES

The include file *\<semaphore.h\>* is present. The following functions are present:

```
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

The following functions are present:

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

### --- - \_POSIX\_SHELL - \_SC\_SHELL

If this option is in effect (as it always is under POSIX.1-2001), the function *system*() is present.

### SPN - \_POSIX\_SPAWN - \_SC\_SPAWN

This option describes support for process creation in a context where it is difficult or impossible to use *fork*(), for example, because no MMU is present.

If **\_POSIX\_SPAWN** is in effect, then the include file *\<spawn.h\>* and the following functions are present:

```
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()
```

If also **\_POSIX\_PRIORITY\_SCHEDULING** is in effect, then the following functions are present:

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

### SPI - \_POSIX\_SPIN\_LOCKS - \_SC\_SPIN\_LOCKS

This option implies the **\_POSIX\_THREADS** and **\_POSIX\_THREAD\_SAFE\_FUNCTIONS** options. The following functions are present:

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

### SS - \_POSIX\_SPORADIC\_SERVER - \_SC\_SPORADIC\_SERVER

The scheduling policy **SCHED\_SPORADIC** is supported. This option implies the **\_POSIX\_PRIORITY\_SCHEDULING** option. The following functions are affected:

```
sched_setparam()
sched_setscheduler()
```

### SIO - \_POSIX\_SYNCHRONIZED\_IO - \_SC\_SYNCHRONIZED\_IO

The following functions are affected:

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

### TSA - \_POSIX\_THREAD\_ATTR\_STACKADDR - \_SC\_THREAD\_ATTR\_STACKADDR

The following functions are affected:

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

### TSS - \_POSIX\_THREAD\_ATTR\_STACKSIZE - \_SC\_THREAD\_ATTR\_STACKSIZE

The following functions are affected:

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

### TCT - \_POSIX\_THREAD\_CPUTIME - \_SC\_THREAD\_CPUTIME

The clockID CLOCK\_THREAD\_CPUTIME\_ID is supported. This option implies the **\_POSIX\_TIMERS** option. The following functions are affected:

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

### TPI - \_POSIX\_THREAD\_PRIO\_INHERIT - \_SC\_THREAD\_PRIO\_INHERIT

The following functions are affected:

```
pthread_mutexattr_getprotocol()
pthread_mutexattr_setprotocol()
```

### TPP - \_POSIX\_THREAD\_PRIO\_PROTECT - \_SC\_THREAD\_PRIO\_PROTECT

The following functions are affected:

```
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

If this option is in effect, the different threads inside a process can run with different priorities and/or different schedulers. The following functions are affected:

```
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

The following functions are affected:

```
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

The following functions are affected:

```
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

This option implies the **\_POSIX\_THREAD\_PRIORITY\_SCHEDULING** option. The following functions are affected:

```
sched_getparam()
sched_setparam()
sched_setscheduler()
```

### THR - \_POSIX\_THREADS - \_SC\_THREADS

Basic support for POSIX threads is available. The following functions are present:

```
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

The following functions are present:

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

### TMR - \_POSIX\_TIMERS - \_SC\_TIMERS

The following functions are present:

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

### TRC - \_POSIX\_TRACE - \_SC\_TRACE

POSIX tracing is available. The following functions are present:

```
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

This option implies the **\_POSIX\_TRACE** option. The following functions are present:

```
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

Tracing children of the traced process is supported. This option implies the **\_POSIX\_TRACE** option. The following functions are present:

```
posix_trace_attr_getinherited()
posix_trace_attr_setinherited()
```

### TRL - \_POSIX\_TRACE\_LOG - \_SC\_TRACE\_LOG

This option implies the **\_POSIX\_TRACE** option. The following functions are present:

```
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

The following functions are present:

```
posix_mem_offset()
posix_typed_mem_get_info()
posix_typed_mem_open()
```

### --- - \_POSIX\_VDISABLE

Always present (probably 0). Value to set a changeable special control character to indicate that it is disabled.

## X/OPEN SYSTEM INTERFACE EXTENSIONS

### XSI - \_XOPEN\_CRYPT - \_SC\_XOPEN\_CRYPT

The following functions are present:

```
crypt()
encrypt()
setkey()
```

### XSI - \_XOPEN\_REALTIME - \_SC\_XOPEN\_REALTIME

This option implies the following options:

- **\_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 - --- - ---

The Advanced Realtime option group implies that the following options are all defined to 200112L:

- **\_POSIX\_ADVISORY\_INFO**

  - **\_POSIX\_CLOCK\_SELECTION**

  (implies **\_POSIX\_TIMERS**)

- **\_POSIX\_CPUTIME**

  (implies **\_POSIX\_TIMERS**)

- **\_POSIX\_MONOTONIC\_CLOCK**

  (implies **\_POSIX\_TIMERS**)

- **\_POSIX\_SPAWN**

  - **\_POSIX\_SPORADIC\_SERVER**

  (implies **\_POSIX\_PRIORITY\_SCHEDULING**)

- **\_POSIX\_TIMEOUTS**

  - **\_POSIX\_TYPED\_MEMORY\_OBJECTS**

  ### XSI - \_XOPEN\_REALTIME\_THREADS - \_SC\_XOPEN\_REALTIME\_THREADS

This option implies that the following options are all defined to 200112L:

- **\_POSIX\_THREAD\_PRIO\_INHERIT**

  - **\_POSIX\_THREAD\_PRIO\_PROTECT**

  - **\_POSIX\_THREAD\_PRIORITY\_SCHEDULING**

  ### ADVANCED REALTIME THREADS - --- - ---

This option implies that the following options are all defined to 200112L:

- **\_POSIX\_BARRIERS**

  (implies **\_POSIX\_THREADS**, **\_POSIX\_THREAD\_SAFE\_FUNCTIONS**)

- **\_POSIX\_SPIN\_LOCKS**

  (implies **\_POSIX\_THREADS**, **\_POSIX\_THREAD\_SAFE\_FUNCTIONS**)

- **\_POSIX\_THREAD\_CPUTIME**

  (implies **\_POSIX\_TIMERS**)

- **\_POSIX\_THREAD\_SPORADIC\_SERVER**

  (implies **\_POSIX\_THREAD\_PRIORITY\_SCHEDULING**)

### TRACING - --- - ---

This option implies that the following options are all defined to 200112L:

- **\_POSIX\_TRACE**

  - **\_POSIX\_TRACE\_EVENT\_FILTER**

  - **\_POSIX\_TRACE\_LOG**

  - **\_POSIX\_TRACE\_INHERIT**

  ### STREAMS - \_XOPEN\_STREAMS - \_SC\_XOPEN\_STREAMS

The following functions are present:

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

### XSI - \_XOPEN\_LEGACY - \_SC\_XOPEN\_LEGACY

Functions included in the legacy option group were previously mandatory, but are now optional in this version. The following functions are present:

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

### XSI - \_XOPEN\_UNIX - \_SC\_XOPEN\_UNIX

The following functions are present:

```
mmap()
munmap()
msync()
```

This option implies the following options:

- **\_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**

  This option may imply the following options from the XSI option groups:

- Encryption (**\_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**)

  ## SEE ALSO

[**sysconf**(3)](/sysconf/3.md), [**standards**(7)](/standards/7.md)
