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

我想用execl 为什么执行命令回显测试?因为我不能使用system()我有一些原因出了什么问题?

4

1 回答 1

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

于 2016-04-30T00:27:11.550 回答