【发布时间】:2009-10-14 20:28:35
【问题描述】:
下面的sn-p代码创建了4个进程,都共享同一个监听socket。
这样做有什么危险吗?在接受连接后,我是否应该以传统方式始终有一个侦听进程和分叉?
for (p = 0; p < 3; p++) {
pid = fork();
if (pid == 0) break;
}
while (1) {
unsigned int clientlen = sizeof(echoclient);
/* Wait for client connection */
if ((clientsock =
accept(serversock, (struct sockaddr *) &echoclient,
&clientlen)) < 0) {
die("Failed to accept client connection");
}
fprintf(stdout, "Process No. %d - Client connected: %s\n",
p,
inet_ntoa(echoclient.sin_addr));
handle_client(clientsock);
}
(我知道在接受后分叉允许程序为每个连接创建一个进程。我正在玩原始线程和各种异步的东西,所以我只是在考虑每个核心有一个进程。)
【问题讨论】:
标签: c linux unix networking