#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <wait.h>
#include <errno.h>
int num_clients = 0;
int dead_clients = 0;
void sig_chld_handler(int sig)
{
pid_t pid;
if (sig == SIGCHLD)
{
while(1)
{
pid == wait(NULL);
if (pid < 0 && errno == ECHILD)
{
break;
}
printf("A child dead ,current child number: %d, id: %d\n",++dead_clients,pid);
}
}
}
int main( int argc, char **argv)
{
pid_t pid;
signal(SIGCHLD, sig_chld_handler);
for (int i=0; i < 30; i++)
{
if ((pid = fork()) == 0)
{
exit(0);
}
else if (pid > 0)
{
printf("A child created, current child number: %d, id\n",++num_clients,pid);
}
}
sleep(100);
getchar();
return 0;
}
处理多进程的一个比较好的例子
最新推荐文章于 2022-09-05 11:40:28 发布