linux c socket之受限的多任务处理
来源:互联网 发布:淘宝京东店 编辑:程序博客网 时间:2024/05/20 05:53
/* * File: TCPEchoServer-ForkN.c 限制进程数量 * Author: 云守护 */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/wait.h>#include <pthread.h>#include <netdb.h>#include "Utility.h"void ProcessMain(int server_sock);int main(int argc, char** argv) { if (argc != 3) DieWithUserMessage("param", "<server port/Service> <process count>"); char *service = argv[1]; unsigned int processLimit=atoi(argv[2]); int server_sock=SetupTCPServerSocket(service); int processCt=0; while(processCt<processLimit-1) { //一定的进程数 pid_t pid=fork(); if(pid<0) DieWithSystemMessage("fork() failed!"); else if(pid==0) { //子进程 ProcessMain(server_sock); } processCt++; } //父进程 ProcessMain(server_sock); return (EXIT_SUCCESS);}void ProcessMain(int server_sock){ for(;;) { int client_sock=AcceptTCPConnection(server_sock); printf("with child process:%d\n",getpid()); HandleTCPClient(client_sock); }}