我希望我的程序能够在发生信号时休眠最多10秒。因此,我尝试了以下程序。
程序:
程序:
#include<stdio.h>
#include<signal.h>
#include<errno.h>
int main()
{
printf("PID: %d\n",getpid());
int unslept=10;
while(unslept>0){
unslept=sleep(unslept);
if(errno==EINTR)
continue;
}
return 0;
}
输出:
$ ./a.out
PID: 18935
User defined signal 1
$
我希望上述程序即使被中断信号打断,也能执行10秒钟。我进行了实验,一个终端执行该程序。然后使用另一个终端使用kill命令向该进程发送SIGUSR1信号。但是,同样的问题发生了。一旦信号传递,程序就会终止。那么,有没有办法在不影响任何信号的情况下执行我的程序达到10秒。
signal(7)
)手册页面,你会发现SIGUSR1
(和SIGUSR2
)的默认操作是终止进程。 - Some programmer dude