处理多进程的一个比较好的例子

来源:互联网 发布:mac office 64位 编辑:程序博客网 时间:2024/05/15 06:08
#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;}