在C程序,比方說,我WANN使用Exec的功能執行規定的程序,例如,如果我想只是嘗試ls -l命令,我會做一些像使用execvp與輸入,輸出和重定向
args[0]="ls";
args[1]="-l";
args[2]=NULL;
...
execvp("ls", args);
這一切都很好。現在如果我想將重定向添加到文件(或stderr)呢? 我被卡住了,很明顯,在數組中加入> log.txt作爲第三項是行不通的,但我不知道如何繼續。
另外,如果我想通過一些輸入參數?如果我想執行GCC命令,例如「gcc -o out in redirection> log.txt」,該怎麼辦?
[更新自評:]
這是模擬殼一個C程序,它可以在「運行字符串」,包含一個命令,一個列表O參數,輸入和重定向串。
「如果我想通過一些輸入參數怎麼辦?」 - 不是那裏的'args'數組**完全**的目的? (如果你想**輸入和輸出stdin/stdout文本,你需要'popen()'。) –
可能重複[Redirect standard output to a file?](http://stackoverflow.com/questions/23135577/redirect-standard-output-to-a-file) –
@OliCharlesworth在'freopen'之後是否有保證不僅流,而且文件描述符是相同的? – Deduplicator