相关疑难解决方法(0)

在接受连接之前或之后分叉?

以下代码片段创建了4个进程,所有进程共享相同的侦听套接字.

这样做有危险吗?在以传统方式接受连接后,我是否应始终拥有一个监听过程和分支?

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);
}
Run Code Online (Sandbox Code Playgroud)

(我知道接受后分叉允许一个程序为每个连接创建一个进程.我正在玩原型线程和各种异步的东西,所以我只想看每个核心有一个进程.)

c unix linux networking

9
推荐指数
1
解决办法
2852
查看次数

标签 统计

c ×1

linux ×1

networking ×1

unix ×1