我的程序在使用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/

10-12 16:10