int main(void)
{
    execl("echo", "test");
    return 0;
}


我想用execl执行命令回声测试
为什么呢因为我不能使用system(),所以我有一些原因
怎么了 ?

最佳答案

execl函数不会像shell那样在PATH上查找命令,因此您需要提供echo的完整路径(或者,我想提供当前工作目录的相对路径)。另外,args列表中的第一个arg应该是可执行文件的文件名,最后一个arg应该是NULL,以便execl可以找出您要传递的args数量。

这对我有用:

#include <unistd.h>

int main(void)
{
    execl("/bin/echo", "/bin/echo", "test", NULL);
    return 0;
}


您可以运行which echo来查找echo在系统上的位置。它可能与我的有所不同,您必须编辑代码。

关于c++ - 如何使用execl替代系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36949317/

10-11 21:35