Kunikda 2015-06-18 17:36 采纳率: 0%
浏览 3523

多客户socket出现fork: Resource temporarily unavailable

server端代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "multiple_socket.h"

int main()
{
int server_sockfd,client_fd;
struct sockaddr_in server_addr, client_addr;
socklen_t server_len, client_len;

/* Create an unnamed socket for server */
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);

/* Name the socket */
server_addr.sin_family = AF_INET;
server_addr.sin_port = SIN_PORT;
server_addr.sin_addr.s_addr = inet_addr(LOOPBACK);
server_len = sizeof(server_addr);
bind(server_sockfd, (struct sockaddr *)&server_addr, server_len);

/* Create a connection queue & wait for clients */
listen(server_sockfd, SOCKET_QUEUE_SIZE);
signal(SIGCHLD, SIG_IGN);

while(1) {
    char ch;
    if(0 == fork()) {
        /* Accept a connection */
        client_len = sizeof(server_addr);
        client_fd = accept(server_sockfd, 
            (struct sockaddr *)&client_addr, &client_len);


        read(client_fd, &ch, 1);
        sleep(SLEEP_TIME);
        ch++;
        write(client_fd, &ch, 1);
        close(client_fd);
        exit(0);
    } 
}

return 0;

}


  • 写回答

2条回答

  • 一枪尽骚丶魂 2015-06-19 00:38
    关注

    你这样循环的创建子进程,导致资源不足,所以报这样的错误,应该在accept之后fork

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题