当我使用execlp("ls", "ls", "-al", NULL)
时,我的程序有效,但当execlp("{", "{", "ls", "-al", "}", NULL)
有没有办法使用execlp()
的大括号?
答案 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本身会将其拆分为单词。)