我的程序在使用execlp("ls", "ls", "-al", NULL)
时工作,但在使用execlp("{", "{", "ls", "-al", "}", NULL)
时不工作
有没有办法在execlp()
中使用大括号?
最佳答案
基本上,答案是否定的。
execlp("{", "{", "ls", "-al", "}", NULL)
您正在尝试执行名为
{
的命令。{
不是命令;它是shell语法的一部分,execlp
(与system
不同)不会通过shell执行其命令。命令名必须是实际的可执行文件(二进制或shell脚本)。如果您真的想这样做,可以调用
/bin/sh
作为命令,并传递命令行参数,然后它将执行这些参数。例如(我没有测试过这个):execlp("/bin/sh", "/bin/sh", "-c", "{ ls -al; }", NULL);
注意,整个命令是一个字符串,它处理
/bin/sh
选项的一个参数。(然后,外壳本身将把它分成几个字。)关于c - 如何在execlp()中使用大括号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26769682/