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