gpt4 book ai didi

c - execl + 查找 + -exec : missing argument to `-exec'

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:55 26 4
gpt4 key购买 nike

我正在尝试使用 find ... -exec ... 运行 execlpfind 程序始终告诉我:

find: missing argument to `-exec'

有什么问题吗?当我在我的 shell 上使用这些参数运行 find 时,它成功了。

我的函数调用如下(在查看相关的 SO 线程之后,我尝试了几种参数安排):

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);

最佳答案

当您从 C 执行命令时,您不需要 ; 之前的 \

使用这个语法应该可行

execlp("find","find","/home/me","-exec","/usr/bin/stat", "{}", ";",NULL);

在 shell 上,; 标记命令的结束,必须进行转义。 execlp 不通过 shell 执行命令,它会立即执行。


编辑——你实际上只做一个找到 所以这部分不是必需的

此外,exec 系列用请求的命令替换当前进程。所以只有第一个execlp会被执行。

一个解决办法是fork()对每一个find(一个一个的,等待子进程结束,否则输出会是所有结果的混合).

关于c - execl + 查找 + -exec : missing argument to `-exec' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47740987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com