y3d*_*3di 5 c sockets client-server exec
我制作了一个分布式shell程序,它有一个客户端和服务器.客户端向服务器发送命令请求,服务器在本地执行该命令,并且应该将该命令的结果输出到客户端.我无法弄清楚如何将stdout/stderr重定向到客户端.我使用execvp来执行命令.
我想我可能要使用dup2?但我无法弄清楚如何正确使用它.有帮助吗?
您只需要使用dup2()将套接字的文件描述符复制到stderr和stdout文件描述符上.这与重定向到管道几乎是一回事.
cpid = fork();
if (cpid == 0) {
dup2(sockfd, STDOUT_FILENO);
dup2(sockfd, STDERR_FILENO);
execvp(...);
/*... etc. etc. */
Run Code Online (Sandbox Code Playgroud)