標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
POSIX.1 |
両方 | POSIX(ON) |
#define _POSIX_SOURCE
#include <unistd.h>
int pause(void);
呼び出しスレッドの実行を中断します。シグナル・ハンドラーを実行するか、スレッドを終了するシグナルが送達されるまで、スレッドは実行を再開しません。プロセスの thread によって一部のシグナルをブロックできます。詳細は、sigprocmask() - スレッドの検査または変更を参照してください。
着信ブロック解除シグナルでスレッドが終了すると、pause() は 二度と呼び出し元へは戻りません。着信シグナルがシグナル・ハンドラーによって処理される場合、pause() は シグナル・ハンドラーが戻ってから戻ります。
pause() が戻るとき、通常 -1 の値を戻し、errno が EINTR に設定されます。これは、シグナルが受け取られ、正常に処理されたことを示します。
⁄* CELEBP02
This example suspends execution and determines the
current time.
*⁄
#define _POSIX_SOURCE
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
#include <time.h>
void catcher(int signum) {
puts("inside catcher...");
}
void timestamp() {
time_t t;
time(&t);
printf("the time is %s", ctime(&t));
}
main() {
struct sigaction sigact;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
sigact.sa_handler = catcher;
sigaction(SIGALRM, &sigact, NULL);
alarm(10);
printf("before pause... ");
timestamp();
pause();
printf("after pause... ");
timestamp();
}
before pause... the time is Fri Jun 16 09:42:29 2006
inside catcher...
after pause... the time is Fri Jun 16 09:42:39 2006