c -重定向STDIN到套接字和套接字到STDOUT



我正在尝试开发一个简单的命令行客户端到服务器。在我连接到服务器并正确设置一切之后,我想将STDIN重定向到连接到服务器的套接字,并将相同的套接字重定向到STDOUT。我想实现类似nc工具的行为

最简单的解决方案是使用select(),使用read()/write()将数据从STDIN传递到套接字,从套接字传递到STDOUT

是否有其他更简单的方法以某种方式将套接字连接到STDIN/STDOUT?我考虑使用dup2()系统调用。然而,我不知道如何使它工作。

谢谢。

在Linux上,您可以使用splice(2)在内核级别的文件描述符之间移动数据。但是,您仍然必须使用select(2)(或等效的)来并行处理两个方向,或者使用两个线程。

另一种可能性是在程序中进行协议握手,一旦套接字准备好,执行一个程序作为socat来执行数据转发。

例如,调用dup2将套接字复制到文件描述符3中,取消其close-on-exec标志,然后执行socat STDIO FD:3

相关内容

  • 没有找到相关文章

最新更新