你如何使用execlp()大括号?

时间:2014-11-06 00:21:08

标签: c exec parentheses

当我使用execlp("ls", "ls", "-al", NULL)时,我的程序有效,但当execlp("{", "{", "ls", "-al", "}", NULL)

时,它无法正常工作

有没有办法使用execlp()的大括号?

1 个答案:

答案 0 :(得分:2)

基本上,答案是否定的。

execlp("{", "{", "ls", "-al", "}", NULL)

您正在尝试执行名为{的命令。 {不是命令;它是shell语法的一部分,execlp(与system不同)不通过shell执行命令。命令名称必须是实际的可执行文件(二进制或shell脚本)。

如果你真的想这样做,你可以调用/bin/sh作为命令,然后传递它将执行的命令行参数。例如(我没有测试过这个):

execlp("/bin/sh", "/bin/sh", "-c", "{ ls -al; }", NULL);

请注意,整个命令是单个字符串,/bin/sh处理-c选项的参数。 (shell本身会将其拆分为单词。)