1

我有一个小型客户端程序,它使用 rsh 来获取文件的 inode 号。我面临的问题是 rsh 命令正在执行,但父级没有读取输出。

如果我运行任何命令,比如在本地执行的“ls”,我可以看到输出。

/* Child */

close pipe[0];

dup2(pipe[1],STDOUT_FILENO);

execv("/usr/bin/rsh","ls","-i","a.txt");

/* Parent */

close pipe[1]

bytes  = read pipe[0]

/* bytes always is 0. But if I have ls executed by child, 
 * I can see full output */
4

1 回答 1

0

有接盘侠吗?

我想我有父母没有看到输出的原因。

据我了解,“rsh”需要一个 tty 终端并在前台运行才能输出。

当我在 shell 的后台运行 rsh 时,我可以看到没有输出。

root@vmx2_p2_re1% rsh -n -T re0 ls & [9] 97216 root@vmx2_p2_re1% [9] 完成 rsh -n -T re0 ls root@vmx2_p2_re1%

当我在前台运行时,我可以看到输出:

root@vmx2_p2_re1% rsh -T re0 ls .cshrc .history .login .profile junos.base.conf

当我尝试一个普通命令并让它在后台运行时,我可以在终端上看到输出。

root@vmx2_p2_re1% ls & [9] 97297 root@vmx2_p2_re1% 1 a.txt dfwc.out filter-define.conf filter-define.conf.bk

[9] 完成

有没有人知道如何获取 rsh 的输出,当它不是从 shell 调用而是从后台调用或在后台调用时?

非常感谢!

于 2015-02-25T07:07:51.167 回答