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);    }}

原创粉丝点击