如何使用execl替换系统

时间:2016-04-30 00:15:07

标签: c++ execl

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

我想用execl执行命令回显测试 为什么?因为我无法使用system()我有一些理由 有什么问题?

1 个答案:

答案 0 :(得分:3)

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的位置;它可能与我的不同,你必须编辑代码。