当前位置: 技术问答>linux和unix
自定义信号的signal用法问题
来源: 互联网 发布时间:2016-12-21
本文导语: #include #include #include static void sig_usr(int signo) { if (signo == SIGUSR1) { printf("received SIGUSR1!n"); } else if (signo == SIGUSR2) { printf("receive SIGUSR2!n"); } } int main() { /*******************不明白在这里参数signo是怎么传到sig_us...
#include
#include
#include
static void sig_usr(int signo)
{
if (signo == SIGUSR1)
{
printf("received SIGUSR1!n");
}
else if (signo == SIGUSR2)
{
printf("receive SIGUSR2!n");
}
}
int main()
{
/*******************不明白在这里参数signo是怎么传到sig_usr中******************/
if (signal(SIGUSR1, sig_usr) == SIG_ERR)
{
printf("signal1 error!n");
}
if (signal(SIGUSR1, sig_usr) == SIG_ERR)
{
printf("signal2 error!n");
}
for (;;)
{
pause();
}
return 0;
}
运行结果:
没有想象的那样。
[root@localhost work1]# gcc 1.c -o 1
[root@localhost work1]# ./1 &
[1] 10826
[root@localhost work1]# kill -USR1 10826
[root@localhost work1]# received SIGUSR1!
kill -USR2 10826
[root@localhost work1]#
[1]+ 用户定义信号 2 ./1
[root@localhost work1]#
为什么没用发出第二个信号啊?还有划线处的问题。
|
main函数里两句都是signal(SIGUSR1, sig_usr)
|
信号编号的传递那是系统给你干的活
调用信号处理函数的时候就是把信号编号作为参数的
调用信号处理函数的时候就是把信号编号作为参数的