一个关于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);
} 展开
#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);
} 展开
1个回答
展开全部
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试试)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询