0
我正在编写两个程序(一个客户端,一个服务器),它们通过UNIX套接字相互通信。这个想法是,客户端发送一个命令到服务器,如ls -l
,服务器创建一个子项(fork()
),子项名为execlp(...,command,...)
,execlp
的输出放在客户端的终端窗口中。C,UNIX。通过UNIX套接字发送execlp的输出
但是,现在,我发送给服务器的命令的输出写入服务器的终端窗口,而不是客户端。有没有办法从execlp
获取输出并通过套接字send(..,string,...)
发送给客户端?
我想坚持使用套接字,而不是管道(我发现所有类似的问题都有建议管道的答案)。
是否有理由不绑定孩子'ls',以便其标准输出(和标准错误)进入套接字? –
@JonathanLeffler你能澄清一下吗? – cnicutar
我希望服务器通过接受连接来处理流程,并在父母继续收听时分派子女来管理请求。孩子会修正来自套接字的标准输入,将标准输出和标准错误修改到套接字,然后可以简单地'execvp()'请求的进程。当客户端与服务器位于不同的计算机上时,这将起作用,而管道绝对不会跨越计算机。一些细节可供讨论,但总体论题是“使套接字进入标准I/O流并运行程序”。 –