我有一个小型客户端程序,它使用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 */
答案 0 :(得分:0)
任何参赛者?
我想我之所以没有父母看到的输出。
据我了解," rsh"需要一个tty终端并在前台运行才能输出它。
当我在shell的后台运行rsh时,我可以看到没有输出。
root @ vmx2_p2_re1%rsh -n -T re0 ls& [9] 97216 根@ vmx2_p2_re1% [9]完成rsh -n -T re0 ls root @ vmx2_p2_re1%
当我在前台跑步时,我可以看到输出:
root @ vmx2_p2_re1%rsh -T re0 ls 的.cshrc 。历史 。登录 。轮廓 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]完成ls
有没有人知道如何获取rsh的输出,而不是从shell调用,而是从守护进程调用OR在后台调用?
非常感谢!