关于信号的,很简单的,但是我不会
- C/C++ code
#include<stdio.h>#include<signal.h>void handler_sigint(int signo){ printf("recv SIGINT\n");}int main(){ signal(SIGINT,handler_sigint); while(1); return 0;}我觉得这个程序很奇怪, 她里面的while循环是干嘛的,可是我把它删了,这个程序就收不到信号直接退出了,她在里面可以接受无线次数的信号,可是它怎么在信号signal的后面,我觉得应该改为
- C/C++ code
#include<stdio.h>#include<signal.h>void handler_sigint(int signo){ printf("recv SIGINT\n");}int main(){ while(1) { signal(SIGINT,handler_sigint); } sleep(50); return 0;}上面来那个程序都是运行得到相同的结果,但是对于第一种现象却不理解
我吧第一种里面的while(1)换成sleep(100); 她就只能接受一次信号了
怎么是这样的
感觉很奇怪
[解决办法]
while循环的作用,就是不要你的程序退出去
sleep也就是在100s内退出程序
[解决办法]
signal就是用来设置信号的 (搞清楚程序的功能有些时候查点资料就行了,比在这问快多了)
void (*signal(int sig, void (*func)(int)))(int);
SIGINT发生时,会调用handler_sigint这个函数
所以没必要在while中一直设置信号,设定过了就行了
然后while(1),等待信号的发生