void servershell(int pid) { t_server *server; signal(SIGINT, ft_serv_end); write(1, "server\n", 7); server = ft_serv_init(); recup(server); ft_socktcp(&server->sock, PORT, server->server); new_connect(server); // server->pid = 1; // while (server->pid) acceuil(server, pid); // waitpid(server->pid, NULL, 0); }
/** * @brief Wait for message received * * @param msg_handler Callback for message processing * @param msg_info Handler for epoll and listen socket */ void msg_run(struct msg_info *msg_info, msg_handler_fn_t msg_handler) { struct epoll_event events[MAXEVENTS]; struct epoll_event *event; int n, i; int fd; int ret = -1; int efd = msg_info->efd; int listen_fd = msg_info->listen_fd; while (1) { n = epoll_wait(efd, events, MAXEVENTS, -1); if (-1 == n) { DEBUG_ERROR("epoll wait error\n"); break; } for (i = 0; i < n; i++) { event = &events[i]; fd = event->data.fd; if (listen_fd == fd) { ret = new_connect(listen_fd, efd); if (0 != ret) { printf("accept error\n"); } } else { ret = dispatch_msg(efd, event, msg_handler); if (0 != ret) { printf("Dispatch message failed\n"); } } } } }