- 论坛徽章:
- 0
|
unsigned int gchild = 0;
extern int errno;
static void
sigchild(int signo)
{
if (signo == SIGCHLD)
{
gchild++;
printf("child %d exit pid : %d\n", gchild, wait(NULL));
}
else
{
printf("unknown signal : %d\n", signo);
}
}
int
main(void)
{
pid_t pid;
int i;
if (signal(SIGCHLD, sigchild) == SIG_ERR)
{
printf("can't catch sigchild\n");
exit(1);
}
for (i=0; i<100000000; i++)
{
if ((pid = fork()) < 0)
{
printf("fork error : %s\n", strerror(errno));
exit(1);
}
else if (pid == 0)
{
exit(0);
}
}
sleep(4);
exit(0);
} |
我写了上面的小段代码用来测试僵尸进程与信号,
在执行到 73691 次时, fork 失败, 错误原因为:
Resource temporarily unavailable, 使用
ps -o pid,ppid,command,tty,state
没有发现僵尸,为什么呢?我只是fork,fork后马上退出为什么会资源不足?? |
|