即使信号发生,我也希望我的程序能够长达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 handler
void my_function(int sig){
//do nothing
}
// register signal
signal(SIGNAL_ID, my_function);