サーバが作成するプロセスの数を制限する
L あらかじめ設定された数だけプロセスを作成する
#include "TCPEchoServer.h" /* ヘッダーファイルをインクルード */ void ProcessMain(int servSock); /* プロセスのメインプログラム */ int main(int argc, char *argv[]) { int servSock; unsigned short echoServPort; pit_t processID; unsigned int processLimit; unsigned int processCt; if (argc != 3) { fprintf(stderr, "Usage: %s <Server Port> <FORK LIMIT>\n", argv[0]); exit(1); } echoServPort = atoi(argv[1]); processLimit = atoi(argv[2]); servSock = CreateTCPServerSocket(echoServPort); for(processCt=0; processCt < processLimit; processCt++) if((processID == fork()) < 0) DieWithError("fork() failed"); else if(processID == 0) ProcessMain(servSock); exit(0); } void ProcessMain(int servSock) { int clntSock; for(;;) /* 処理を繰り返し実行 */ { clntSock = AcceptTCPConnection(servSock); printf("with child process: %d\n", (unsigned int) getpid()); HandleTCPClient(clntSock); } }
指定されたプロセスしか生成しないため、スケジューリングによるオーバーヘッドを削減できる。