C fork()客户端实现非阻塞IO

C fork()客户端实现非阻塞IO,c,sockets,C,Sockets,我想实现一个具有非阻塞I/O的客户端套接字 i、 e.终端中的单个客户端在收到stdin的命令时将fork(),然后该子客户端将连接到fork()的服务器子客户端,处理请求,获取输出,然后以某种方式将该输出返回到父客户端的终端 除了客户机的fork()-ing之外,我目前已经实现了所有功能,因为我不知道如何将子客户机的输出返回给父客户机,以便显示它们 我该怎么做?我假设基本结构是: if ((childPID = fork()) == -1) { // Error } // Child

我想实现一个具有非阻塞I/O的客户端套接字

i、 e.终端中的单个客户端在收到stdin的命令时将fork(),然后该子客户端将连接到fork()的服务器子客户端,处理请求,获取输出,然后以某种方式将该输出返回到父客户端的终端

除了客户机的fork()-ing之外,我目前已经实现了所有功能,因为我不知道如何将子客户机的输出返回给父客户机,以便显示它们

我该怎么做?我假设基本结构是:

if ((childPID = fork()) == -1) {
    // Error
}
// Child process
else if (childPID == 0) {
    // send() to server
    // recv() from server 
    // format output
} 
// Parent process
else {
    // Display output of child clients if ready (?)
}

由于这将一次处理多个命令,我也不完全确定如何“等待”下一个输出显示。例如,假设一个子进程希望在用户按下“enter”键之前保持输出,那么我如何告诉其他子客户端等待显示他们自己的输出呢

看起来你可能对阅读感兴趣(尽管还有其他的)。您可能还想了解该调用。使用
pipe()
在进程之间创建进程间通信。或者切换到
posix_线程
并执行
posix_屏障
或一些
posix_信号灯