1
如何解決這個問題,爲什麼會發生?使用execvp來實現查找命令
char *command[]={"find","-executable","print",">","filename.txt",NULL}
execvp("find",command);
發現:路徑必須先表達:>
如何解決這個問題,爲什麼會發生?使用execvp來實現查找命令
char *command[]={"find","-executable","print",">","filename.txt",NULL}
execvp("find",command);
發現:路徑必須先表達:>
你不能獲得重定向這樣...當你在一個shell中鍵入find ... > file.txt
,>
和file.txt
不是find
命令的參數。 shell會解釋您輸入的所有內容,並從您的命令行中提取重定向,並在保留之前進行重定向。
重定向可以通過dup
在exec
之前獲得一些文件描述符。
if (fork()==0) {
f = open("file.txt",...);
dup2(1,f); // redirects stdout to f...
close(f);
exec(...); // open files remains open on exec (by default).
}
:一般情況下,這是後
fork
ING之前
exec
ING完成