2015-02-24 52 views
1

我有一個使用rsh獲取文件的inode編號的小型客戶端程序。我面臨的問題是rsh命令正在執行,但沒有輸出被父節點讀取。通過程序獲取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

任何接受者?

我想我有沒有父母看到輸出的原因。

據我所知,「rsh」需要一個tty終端,並在前臺運行,以便能夠輸出它的輸出。

當我在shell的後臺運行rsh時,可以看到沒有輸出。

根@ vmx2_p2_re1%RSH -n -T RE0 LS & [9] 97216 根@ vmx2_p2_re1% [9]完成的rsh -n -T RE0 LS 根@ vmx2_p2_re1%

當運行在前景我可以看到輸出:

根@ vmx2_p2_re1%RSH -T RE0 LS 的.cshrc .history中 的.login 的.profile junos.base.conf

當我嘗試一個正常的命令,並讓它在後臺運行時,我可以看到終端上的輸出。

根@ vmx2_p2_re1%1!& [9] 97297 根@ vmx2_p2_re1%1 A.TXT dfwc.out過濾define.conf濾波器define.conf.bk

[9] DONE LS

有沒有人有一個想法,如何獲得rsh的輸出,當它不是從shell調用,而是從守護進程調用或在後臺調用?

非常感謝!