一个关于signal()函数的问题 求解????

#include<signal.h>#include<stdio.h>#include<stdlib.h>pstaticvoidsur1(intsigno){static... #include<signal.h>
#include<stdio.h>
#include<stdlib.h>
pstatic void sur1(int signo)
{
static i = 0;
printf("i = %d ",i);
i++;

}

static void sur2(int signo)
{
static n = 0;
printf("n = %d ",n);
n++;id_t pid;
}
int main(void)
{
pid = getpid();
if(signal(SIGALRM,sur1) == SIG_ERR)
{
printf("signal(SIGALRM) error\n");
exit(3);
}
if(signal(SIGUSR2,sur2) == SIG_ERR);//为什么总是在 这里有错误 ,求解啊

{
printf("signal(SIGUSR2) error\n");
exit(4);
}

alarm(5);
pause();
kill(pid,SIGALRM);
kill(pid,SIGUSR2);
exit(0);
}
展开
 我来答
孤独的收割人方
2013-05-20 · TA获得超过308个赞
知道答主
回答量:126
采纳率:0%
帮助的人:78.8万
展开全部
SIGUSR2 是用户自定义的信号,你都没有产生这个信号,signal函数是接收不到这个信号的,接收不到肯定就是不会处理的。皮之不存毛将焉附。
追问
kill(pid,SIGUSR2);  这里不是产生了的嘛!!!!
追答
#include
#include
#include

static void sur2(int signo)
{
printf("signo = %d ",signo);
}

int main(void)
{
int pid;
pid = getpid();
printf("pid = %d\n",pid);

if(signal(SIGUSR2,sur2) == SIG_ERR);
{
printf("sigusr2 error\n");

}

for(;;);

}

编译运行,然后再新开一个终端,
kill -12 pid(刚刚显示的那个进程ID试试)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式