/*
* 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);
}
}
linux c socket之受限的多任务处理
最新推荐文章于 2024-04-09 22:35:56 发布