我制作了一个具有客户端和服务器的分布式 shell 程序。客户端向服务器发送命令请求,服务器在本地执行该命令,并将该命令的结果输出给客户端。我无法弄清楚如何将 stdout/stderr 重定向到客户端。我使用 execvp 来执行命令。
我想我可能必须使用 dup2 ?但我不知道如何正确使用它。有什么帮助吗?
你只需要使用dup2()
将套接字的文件描述符复制到 stderr 和 stdout 文件描述符上。这与重定向到管道几乎是一样的。
cpid = fork();
if (cpid == 0) {
dup2(sockfd, STDOUT_FILENO);
dup2(sockfd, STDERR_FILENO);
execvp(...);
/*... etc. etc. */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)