gpt4 book ai didi

perl - 使用 STDIN/STDOUT 作为套接字

转载 作者:行者123 更新时间:2023-12-03 11:54:17 25 4
gpt4 key购买 nike

我正在让一个客户端进程使用 xinetd 启动一个服务器进程。据我了解,服务器能够通过其 STDIN 从客户端读取并通过其 STDOUT 写入客户端。由于各种原因(主要是让服务器能够使用 select() 然后 read() 或 recv() )我希望能够以某种方式将 STDIN 和 STDOUT 转换为套接字,然后在其上执行普通套接字 I/O,正如我将与我的服务器将连接到的其他服务器一样。

这能做到吗?这是一个有意义的问题吗?

最佳答案

您提到的所有函数调用都可以用于文件描述符,编号为 STDIN_FILENO 和 STDOUT_FILENO(来自 <unistd.h>)。所以我敢打赌你不需要任何转换。

编辑:有点不正统,但您是否尝试过在 STDOUT_FILE 上写入或在您的服务器中读取 STDIN_FILENO?通过快速浏览 xinetd 代码,它看起来像是将打开的套接字 fd dup()s 到服务器的所有 fds。也许您可以将其中任何一个用作全双工。

我只看了here

  for ( fd = 0 ; fd <= MAX_PASS_FD ; fd++ )
{
if ( dup2( descriptor, fd ) == -1 )
{
msg_resume();
msg( LOG_ERR, func,
"dup2( %d, %d ) failed: %m", descriptor, fd ) ;
_exit( 1 ) ;
}
}

关于perl - 使用 STDIN/STDOUT 作为套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16720672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com