posixoptions - POSIX
標準の選択可能な部分
POSIX 標準 (以下の情報は
POSIX.1-2001 の抜粋) は
互換システムの動作とインターフェースのセットを記述している。
しかし、多くのインターフェースは選択可能であり、
コンパイル時にインターフェースが使用可能かをテストする機能テストマクロと、
実行時にテストする関数
sysconf(3),
fpathconf(3),
pathconf(3),
confstr(3)
がある。
シェルスクリプトでは
getconf(1)
を使うことができる。
詳細は
sysconf(3)
を参照すること。
POSIX
省略形の名前・オプション・オプションを調べるための
sysconf(3)
引き数の名前・(可能ならば)
非常に短い説明を記述する。
より正確な詳細は POSIX
標準自身に書かれている。
POSIX 標準は今日では Web
で自由にアクセスできる。
以下のアドバイスの関数が存在する。
posix_fadvise(),
posix_fallocate(),
posix_memalign(),
posix_madvise().
ヘッダー
<aio.h>
が存在する。
以下の関数が存在する。
aio_cancel(),
aio_error(),
aio_fsync(),
aio_read(),
aio_return(),
aio_suspend(),
aio_write(),
lio_listio().
このオプションは
_POSIX_THREADS と
_POSIX_THREAD_SAFE_FUNCTIONS
オプションを暗黙の内に指定する。
以下の関数が存在する。
pthread_barrier_destroy(),
pthread_barrier_init(),
pthread_barrier_wait(),
pthread_barrierattr_destroy(),
pthread_barrierattr_init().
このオプションが有効な場合
(POSIX.1-2001 では常に有効)、 root
だけがファイル所有者の変更を許され、
root
以外はファイルのグループを
自分が所属するグループのいずれか
1
つにだけ設定することができる。
関数
chown(),
fchown()
に影響する。
このオプションは
_POSIX_TIMERS
オプションを暗黙の内に指定する。
以下の関数が存在する。
pthread_condattr_getclock(),
pthread_condattr_setclock(),
clock_nanosleep().
CLOCK_REALTIME が関数
clock_settime()
で変更された場合、絶対時間に関係する全てのタイマーのセットに影響する。
clockID CLOCK_PROCESS_CPUTIME_ID
がサポートされている。
このクロックの初期値は、各プロセス毎に
0 となる。
このオプションは
_POSIX_TIMERS
オプションを暗黙の内に指定する。
関数
clock_getcpuclockid()
が存在する。
このオプションは削除された。XPG6
最終版にはない。
関数
fsync() が存在する。
Internet Protocol Version 6
がサポートされている。
このオプションが有効な場合
(POSIX.1-2001 では常に有効)、
システムは POSIX
方式のジョブ制御を実装しており、
以下の関数が存在する。
setpgid(),
tcdrain(),
tcflush(),
tcgetpgrp(),
tcsendbreak(),
tcsetattr(),
tcsetpgrp().
共有メモリーがサポートされている。
インクルードファイル
<sys/mman.h> が存在する。
次の関数が存在する。
mmap(),
msync(),
munmap().
共有メモリーがコア内にロックできる。
次の関数が存在する。
mlockall(),
munlockall().
より詳細に、範囲をコア内にロックできる。
次の関数が存在する。
mlock(),
munlock().
関数
mprotect()
が存在する。
インクルードファイル
<mqueue.h> が存在する。
以下の関数が存在する。
mq_close(),
mq_getattr(),
mq_notify(),
mq_open(),
mq_receive(),
mq_send(),
mq_setattr(),
mq_unlink().
CLOCK_MONOTONIC
がサポートされている。
このオプションは
_POSIX_TIMERS
オプションを暗黙の内に指定する。
影響を受ける関数は以下の通り。
aio_suspend(),
clock_getres(),
clock_gettime(),
clock_settime(),
timer_create().
このオプションは削除された。XPG6
最終版にはない。
このオプションが有効な場合
(POSIX.1-2001 では常に有効)、
NAME_MAX
より長いパス名の構成要素は切り詰められないが、エラーになる。
この設定は構成要素のパス接頭辞に依存する場合もある。
このオプションは非同期
I/O
の優先度が指定できることを表す。
これは以下の関数に影響する。
aio_read(),
aio_write().
インクルードファイル
<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().
raw
ソケットがサポートされている。
次の関数が影響を受ける。
getsockopt(),
setsockopt().
このオプションは
_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().
リアルタイムシグナルがサポートされている。
以下の関数が存在する。
sigqueue(),
sigtimedwait(),
sigwaitinfo().
このオプションが有効な場合
(POSIX.1-2001 では常に有効)、 POSIX
正規表現がサポートされ、以下の関数が存在する。
regcomp(),
regerror(),
regexec(),
regfree().
このオプションが有効な場合
(POSIX.1-2001 では常に有効)、
プロセスは保存 (saved) set-user-ID
と保存 set-group-ID を持つ。
影響を受ける関数は以下の通り。
exec(),
kill(),
seteuid(),
setegid(),
setgid(),
setuid().
インクルードファイル
<semaphore.h> が存在する。
以下の関数が存在する。
sem_close(),
sem_destroy(),
sem_getvalue(),
sem_init(),
sem_open(),
sem_post(),
sem_trywait(),
sem_unlink(),
sem_wait().
以下の関数が存在する。
mmap(),
munmap(),
shm_open(),
shm_unlink().
このオプションが有効な場合
(POSIX.1-2001
では常に有効)、関数
system() が存在する。
このオプションは、例えば
MMU
が存在しないなどの理由によって、
fork()
を使用することが難しいか不可能という状況で、
プロセス生成をサポートすることを表す。
_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().
このオプションは
_POSIX_THREADS と
_POSIX_THREAD_SAFE_FUNCTIONS
オプションを暗黙の内に指定する。
以下の関数が存在する。
pthread_spin_destroy(),
pthread_spin_init(),
pthread_spin_lock(),
pthread_spin_trylock(),
pthread_spin_unlock().
スケジューリングポリシー
SCHED_SPORADIC
がサポートされている。
このオプションは
_POSIX_PRIORITY_SCHEDULING
オプションを暗黙の内に指定する。
影響を受ける関数は以下の通り。
sched_setparam(),
sched_setscheduler().
影響を受ける関数は以下の通り。
open(),
msync(),
fsync(),
fdatasync().
影響を受ける関数は以下の通り。
pthread_attr_getstack(),
pthread_attr_getstackaddr(),
pthread_attr_setstack(),
pthread_attr_setstackaddr().
影響を受ける関数は以下の通り。
pthread_attr_getstack(),
pthread_attr_getstacksize(),
pthread_attr_setstack(),
pthread_attr_setstacksize().
clockID CLOCK_THREAD_CPUTIME_ID
がサポートされている。
このオプションは
_POSIX_TIMERS
オプションを暗黙の内に指定する。
影響を受ける関数は以下の通り。
pthread_getcpuclockid(),
clock_getres(),
clock_gettime(),
clock_settime(),
timer_create().
影響を受ける関数は以下の通り。
pthread_mutexattr_getprotocol(),
pthread_mutexattr_setprotocol().
影響を受ける関数は以下の通り。
pthread_mutex_getprioceiling(),
pthread_mutex_setprioceiling(),
pthread_mutexattr_getprioceiling(),
pthread_mutexattr_getprotocol(),
pthread_mutexattr_setprioceiling(),
pthread_mutexattr_setprotocol().
このオプションが有効な場合、1
つのプロセス内の個々のスレッドを
個々の優先度または個々のスケジューラ
(またはその両方)
で実行できる。
影響を受ける関数は以下の通り。
pthread_attr_getinheritsched(),
pthread_attr_getschedpolicy(),
pthread_attr_getscope(),
pthread_attr_setinheritsched(),
pthread_attr_setschedpolicy(),
pthread_attr_setscope(),
pthread_getschedparam(),
pthread_setschedparam(),
pthread_setschedprio().
影響を受ける関数は以下の通り。
pthread_barrierattr_getpshared(),
pthread_barrierattr_setpshared(),
pthread_condattr_getpshared(),
pthread_condattr_setpshared(),
pthread_mutexattr_getpshared(),
pthread_mutexattr_setpshared(),
pthread_rwlockattr_getpshared(),
pthread_rwlockattr_setpshared().
影響を受ける関数は以下の通り。
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().
このオプションは
_POSIX_THREAD_PRIORITY_SCHEDULING
オプションを暗黙の内に指定する。
影響を受ける関数は以下の通り。
sched_getparam(),
sched_setparam(),
sched_setscheduler().
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().
以下の関数が存在する。
mq_timedreceive(),
mq_timedsend(),
pthread_mutex_timedlock(),
pthread_rwlock_timedrdlock(),
pthread_rwlock_timedwrlock(),
sem_timedwait(),
posix_trace_timedgetnext_event().
以下の関数が存在する。
clock_getres(),
clock_gettime(),
clock_settime(),
nanosleep(),
timer_create(),
timer_delete(),
timer_gettime(),
timer_getoverrun(),
timer_settime().
POSIX トレーシング (tracing)
が使用可能である。
以下の関数が存在する。
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().
このオプションは
_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().
トレースされているプロセスの子プロセスのトレースをサポートする。
このオプションは
_POSIX_TRACE
オプションを暗黙の内に指定する。
以下の関数が存在する。
posix_trace_attr_getinherited(),
posix_trace_attr_setinherited().
このオプションは
_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().
以下の関数が存在する。
posix_mem_offset(),
posix_typed_mem_get_info(),
posix_typed_mem_open().
常に存在する (たぶん 0
である)。
変更可能な特殊制御文字を設定する値。
これにより特殊制御文字が無効であることを表す。
_XOPEN_CRYPT,
_XOPEN_LEGACY,
_XOPEN_REALTIME,
_XOPEN_REALTIME_THREADS,
_XOPEN_UNIX.
sysconf(3),
standards(7)
この man ページは Linux
man-pages
プロジェクトのリリース
3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。