C程序模板

来源:互联网 发布:linux snmp测试 编辑:程序博客网 时间:2024/06/04 19:58

1. 多进程服务模型

void sig_handler(int signo){  pid_t pid;  int   stat;    if (signo == SIGCHLD)    while ((pid = waitpid(-1, &stat, WNOHANG)) > 0);  return;}void handler(int sd){  ...}int main(){  int servfd, clifd;    ...  signal(SIGCHLD, sig_handler);  ...    servfd = tcp_server();    while (1)  {    clifd = tcp_accept(servfd, cliip);    if (clifd == -1)    {      printf("call tcp_accept() failed\n");      goto exit;    }    pid = fork();    if (pid == 0) // child process    {      close(servfd);      handler(clifd);      exit(0);    }    else    {      close(clifd);      continue;    }  } //end of while()    exit:  if (servfd != -1)    close(servfd);  return 0;    }


0 0