将stdout和stderr重定向到套接字以获取分布式shell程序

我制作了一个分布式shell程序,它有一个客户端和服务器。 客户端向服务器发送命令请求,服务器在本地执行该命令,并且应该将该命令的结果输出到客户端。 我无法弄清楚如何将stdout / stderr重定向到客户端。 我使用execvp来执行命令。

我想我可能不得不使用dup2? 但我无法弄清楚如何正确使用它。 有帮助吗?

您只需要使用dup2()将套接字的文件描述符复制到stderr和stdout文件描述符上。 这与重定向到管道几乎是一回事。

 cpid = fork(); if (cpid == 0) { dup2(sockfd, STDOUT_FILENO); dup2(sockfd, STDERR_FILENO); execvp(...); /*... etc. etc. */