当前位置: 技术问答>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)的
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。