2015-11-02 22 views
1

所以我有一个脚本,我尝试运行。 我有这行代码:Execlp C脚本错误

execlp("find","find","-name",cmdCommands,"-exec","stat","--format","\"%A %s %x %w\"","{} \\;",NULL); 

该行给了我这个错误

find: missing argument to '-exec' 

我猜"{} \\;"的问题。我改为"{}","\\;",但我仍然得到相同的错误。

我必须修改才能工作。

cmdCommandschar;我在儿童过程中使用execlp

+0

也下降双反斜线。它也涉及shell的东西。 – alk

+0

我从“--format”中删除引号后,我收到了这条消息:error'format'undeclared。只有1个反斜杠我得到这个:未知的转义序列'\'没有反斜杠它编译,但我回到 - 执行错误 – user2907139

+0

语法是:'--format = format-expression'介意'='! – alk

回答

0

主要问题是您将stat命令及其参数作为find命令的不同参数传递。 stat命令及其所有参数是命令的参数单一参数。

因此,将呼叫改为例如

execlp("find", "find", "-name", cmdCommands, "-exec", 
     "stat --format \"%A %s %x %w\" {}", ";", NULL); 
+0

ty我没有任何错误,但我有一个脚本,您可以在其中引入命令并收到一些响应。在我的情况下,我使用这个execlp命令名为myfind 。如果我想显示execlp的结果,我该怎么做? – user2907139

+0

如果我在命令行中查找。 -name status.c -exec stat --format“%A%s%x%n”{} \;有还是没有 '。'我得到了同样的结果。我的问题是,execlp是功能性的,但我想把它显示为一个printf。像printf(“”); – user2907139

+1

@ user2907139:这是一个不同的问题,所以你想为此创建另一个问题。 – alk

0

你想使用:

execlp("find", "find", 
    ".", /* Replace by path to search through. */ 
    "-name", cmdCommands, 
    "-exec", "stat", "--format=\"%A %s %x %w\"", "{}", ";", 
    (char*) NULL /* The cast is mandatory to stay portable. */ 
); 
+0

我用同样的方式编写并编译并运行,但正如我所说的,我想要在printf(“<你的execlp结果>”)中显示execlp的结果; – user2907139