如何解决这个问题,为什么会这样?
char *command[]={"find","-executable","print",">","filename.txt",NULL}
execvp("find",command);
find:路径必须位于表达式之前:>
答案 0 :(得分:0)
您无法以这种方式获取重定向...在shell中键入find ... > file.txt
时,>
和file.txt
不是find
命令的参数。 shell解释您键入的所有内容并从命令行中提取重定向,在exec
剩余的内容之前进行重定向。
可以通过dup
之前exec
某个文件描述符来获取重定向。通常,这是在fork
之后和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).
}