代码结构:
listenfd = socket(...);
bind(listenfd, ...);
listen(listenfd, ...);
while (1) {
--connfd = accept(listenfd, ...);
--n = fork()
--if (n == -1) {
----perror("call to fork");
----exit(1);
--} else if (n == 0) {
----close(listenfd);
----while (1) {
------read(connfd, ...);
------...
------write(connfd, ...);
----}
----close(connfd);
----exit(0);
--} else
----close(connfd);
--}
上面是一个多进程处理多个client的请求的代码结构 有几个问题不是很了解:
1.父进程的操作是关闭连接,那是不是表示每个连接如果刚好进入的父进程是不是就会连接失败?
2.每个子进程都要关闭端口监听的原因是什么?如果是监听很导致阻塞那为什么父进程不用关闭监听?
求大神解答,3Q
listenfd = socket(...);
bind(listenfd, ...);
listen(listenfd, ...);
while (1) {
--connfd = accept(listenfd, ...);
--n = fork()
--if (n == -1) {
----perror("call to fork");
----exit(1);
--} else if (n == 0) {
----close(listenfd);
----while (1) {
------read(connfd, ...);
------...
------write(connfd, ...);
----}
----close(connfd);
----exit(0);
--} else
----close(connfd);
--}
上面是一个多进程处理多个client的请求的代码结构 有几个问题不是很了解:
1.父进程的操作是关闭连接,那是不是表示每个连接如果刚好进入的父进程是不是就会连接失败?
2.每个子进程都要关闭端口监听的原因是什么?如果是监听很导致阻塞那为什么父进程不用关闭监听?
求大神解答,3Q