当前位置: 技术问答>linux和unix
关于signal函数的问题,大家帮我看看
来源: 互联网 发布时间:2016-04-17
本文导语: 代码: #include #include #include void func(int sig) { printf("OUCH! - I got signal %dn", sig); //signal(SIGINT, SIG_DFL); } int main() { signal(SIGINT, func); while(1) { printf("Hello World!n"); s...
代码:
运行时,向进程发送SIGINT信号(ctrl+c),调用信号处理函数,但是signal参数指定的信号处理函数只是执行一次,当信号第二次来的时候,对该信号的处理将是系统默认的处理方式。
但是,我上面的程序却一直都是signal参数指定的信号处理函数来对SIGINT信号进行处理,进程不会退出,即使我加上了signal(SIGINT, SIG_DFL);进程仍然不会退出,怎么回事啊?
#include
#include
#include
void func(int sig)
{
printf("OUCH! - I got signal %dn", sig);
//signal(SIGINT, SIG_DFL);
}
int main()
{
signal(SIGINT, func);
while(1)
{
printf("Hello World!n");
sleep(1);
}
}
运行时,向进程发送SIGINT信号(ctrl+c),调用信号处理函数,但是signal参数指定的信号处理函数只是执行一次,当信号第二次来的时候,对该信号的处理将是系统默认的处理方式。
但是,我上面的程序却一直都是signal参数指定的信号处理函数来对SIGINT信号进行处理,进程不会退出,即使我加上了signal(SIGINT, SIG_DFL);进程仍然不会退出,怎么回事啊?
|
现在的signal安装信号,处理函数执行后并不需要重新安装。你看的是APUE吧,只有很老的UNIX系统才需要重新安装
至于后一个问题,得看看你是怎么加signal(SIGINT, SIG_DFL)的
至于后一个问题,得看看你是怎么加signal(SIGINT, SIG_DFL)的