我正在尝试使用execlp
运行find ... -exec ...
,而find
计划一直告诉我:
find: missing argument to `-exec'
可能有什么不对?当我在shell上使用这些参数运行find时,它会成功。
我的函数调用跟随(在查看相关的SO线程之后,我已经尝试了几种argmuments的安排):
execlp("find","find","/home/me","-exec","/usr/bin/stat", "{}", "\\;",NULL);
execlp("find","find","/home/me","-exec","/usr/bin/stat", "'{}'", "\\;",NULL);
execlp("find","find","/home/me","-exec","/usr/bin/stat", "{}", "';'",NULL);
execlp("find","find","/home/me","-exec","/usr/bin/stat {} \\;",NULL);
答案 0 :(得分:0)
从C执行命令时,\
;
使用此语法应该可以正常工作
execlp("find","find","/home/me","-exec","/usr/bin/stat", "{}", ";",NULL);
在shell上,;
标记命令的结束,并且必须进行转义。 execlp
没有通过shell执行命令,它会立即执行。
<小时/> 编辑 - 您实际上只执行一次查找所以此部分不是必需的
此外,exec
系列用所请求的命令替换当前进程。因此,只会执行第一个execlp
。
每个fork()
的解决方案是find
(逐个等待子进程结束,否则输出将是所有结果的混合)。