- 论坛徽章:
- 0
|
下面代码运行后,counter的预期值应该是200,为什么才120多,而且这个值不固定!
fork后全局变量是在父进程和子进程之间是共享的吗?
我的想法是使父进程和子进程同时向父进程发送 SIGALRM信号,是不信号程序没能及时处理,信号被丢弃了??还是什么造成信号没有完全被处理???
如何在linux下查看该进程的已处理和未处理的信号数量???
#include<signal.h>
#include<unistd.h>
#include<stdio.h>
void sigalerm(int);
static int counter=0;
int main() {
int i=0;
signal(SIGALRM , sigalerm);
pid_t pid=getpid(),child;
child=fork();
printf("\npid=%d\n",pid);
while(i++<100) {
kill(pid,SIGALRM);
}
if(child==0)
{
exit(0);
}
wait();
printf("\ncounter is:%d",counter);
}
void sigalerm(int sig) {
counter++;
} |
|