2011-10-03 72 views
1

我正在使用execvp()運行多個命令。在我的一個execs()之前使用dup2()後,它按照預期重定向到dup2()中的文件。但是,問題是在dup2之後的任何execvp()都會被重定向迴文件。我的問題是:我如何重定向到帶有dup2的標準輸出?如何在使用dup2(..)並使用execvp(...)後重定向回stdout

+1

你確定在一個單獨的'fork'-ed過程中調用每個'execvp'嗎?如果不這樣做,第一次調用'execvp'就會替換進程的映像,任何後續的指令(包括其他調用'execve')都不會被觸及。 –

+0

是的,我在子進程中使用exec和dup2。如果(pidid == 0){....} – HAxxor

+0

我想通了..我有一個全局變量布爾值,一旦exec完成,我從來沒有改變回子進程。愚蠢的錯誤 – HAxxor

回答

3

你可以用dup()和dup2()把stdout保存回去。

我建議你做dup2()在fork()(在子進程內部)之後而不是之前重定向。

相關問題