ualarm -
指定したマイクロ秒後にシグナルを送る予定をする
#include <unistd.h>
useconds_t ualarm(useconds_t usecs, useconds_t interval);
ualarm():
- glibc 2.12 以降:
-
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
|| /* Glibc 2.19 以降: */ _DEFAULT_SOURCE
|| /* Glibc 2.19 以前: */ _BSD_SOURCE
- glibc 2.12 より前:
-
_BSD_SOURCE || _XOPEN_SOURCE >= 500
ualarm()
関数は、呼び出し元のプロセスに対して
usecs マイクロ秒 (以上)
後に
SIGALRM
シグナルを送る。
遅れはシステムの活性度・呼び出しの処理時間・
システムタイマーの粒度によって長くなるかもしれない。
捕捉または無視されない限り、
SIGALRM
シグナルはプロセスを終了させる。
interval 引数が 0
でない場合、最初の
SIGALRM シグナルの後、
さらに
interval
マイクロ秒毎に SIGALRM
シグナルが送られる。
この関数は、過去に設定された
alarm
の残りマイクロ秒数を返す。
実行中の alarm
がない場合は 0
を返す。
- EINTR
- シグナルによって中断された。
signal(7) 参照。
- EINVAL
-
usecs または interval
が 1000000 未満でない
(これがエラーとして扱われるシステムの場合)。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
ualarm() |
Thread safety |
MT-Safe |
4.3BSD, POSIX.1-2001. POSIX.1-2001 では
ualarm()
は過去のものとされている。
POSIX.1-2008 では、
ualarm()
の仕様が削除されている。
4.3BSD, SUSv2, POSIX
はエラーを定義していない。
POSIX.1-2001 では、
usecs 引数が 0
の場合、何が起こるかは規定されていない。
Linux
(やおそらく他ほとんどのシステム)
では、
usecs 引数が 0
の場合、処理待ちのアラームがキャンセルされる。
useconds_t 型は [0,1000000]
の範囲の整数を保持できる符号なし整数型である。
もともとの BSD
での実装や、バージョン
2.1 より前の glibc では、
ualarm() の引数の型は
unsigned
int であった。
プログラム中に明示的に
useconds_t
と書かない方が、移植性が高くなる。
この関数と
alarm(2),
sleep(3),
nanosleep(2),
setitimer(2),
timer_create(2),
timer_delete(2),
timer_getoverrun(2),
timer_gettime(2),
timer_settime(2),
usleep(3)
のような他のタイマー関数との相互作用は規定されていない。
この関数は廃止予定である。
代わりに
setitimer(2)
もしくは POSIX
インターバルタイマー
(
timer_create(2) など)
を使うこと。
alarm(2),
getitimer(2),
nanosleep(2),
select(2),
setitimer(2),
usleep(3),
time(7)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。