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完成