pause() 函数原型如下:
[C++] 纯文本查看 复制代码 #include <unistd.h>
int pause(void);
调用 pause() 后,进程会被挂起,直到信号处理将其中断(未要求处理信号也能终止该进程)。在信号被处理时,pause() 被中断,并返回 -1 ,且 errno 被设置为 EINTR 。
测试代码:
[C++] 纯文本查看 复制代码 #include <stdio.h>
#include <signal.h>
static void hsig_usr1(int sig)
{
printf ("SIGUSR1 caught\n");
}
int main()
{
printf ("My pid : %d\n", (long)getpid());
signal(SIGUSR1, hsig_usr1);
pause();
printf ("wake up\n");
return 0;
}
可以用 kill 命令对该程序发送信号:$ kill -s SIGUSR1 1166
$ kill -s SIGSYS 1282
$ kill -s SIGIO 1285 相应的输出:$ ./pause
My pid : 1166
SIGUSR1 caught
wake up
$ ./pause
My pid : 1282
错误的系统调用(吐核)
$ ./pause
My pid : 1285
I/O possible |