pause() - シグナルを保留中のプロセスの中断

標準

標準/拡張機能 C/C++ 依存項目

POSIX.1
POSIX.4a
XPG4
XPG4.2
Single UNIX Specification、バージョン 3

両方

POSIX(ON)

形式

#define _POSIX_SOURCE
#include <unistd.h>

int pause(void);

機能説明

呼び出しスレッドの実行を中断します。シグナル・ハンドラーを実行するか、スレッドを終了するシグナルが送達されるまで、スレッドは実行を再開しません。プロセスの thread によって一部のシグナルをブロックできます。詳細は、sigprocmask() - スレッドの検査または変更を参照してください。

着信ブロック解除シグナルでスレッドが終了すると、pause() は 二度と呼び出し元へは戻りません。着信シグナルがシグナル・ハンドラーによって処理される場合、pause() は シグナル・ハンドラーが戻ってから戻ります。

戻り値

pause() が戻るとき、通常 -1 の値を戻し、errno が EINTR に設定されます。これは、シグナルが受け取られ、正常に処理されたことを示します。

CELEBP02
⁄* 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

関連情報