c++ - 如何使用execl替代系统

标签 c++ execl

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/

相关文章:

C++将私有(private)纯虚拟方法覆盖为公共(public)

c++ - COM dll注销问题

linux - Linux中execl如何处理 "/bin/sh"?

c - 使用 C 将参数传递给另一个函数

c - 请解释exec()函数及其家族

c++ - clang : warning: principal. o: 'linker' 输入未使用

c++ - Qt:用于换行文本的 heightForWidth

c++ - 如何在 C++ 中打印 system() 输出?

c - 为什么我不能使用 execl() 来运行 bash 脚本?

c - 将 bash 命令 echo 和 bc 管道化到 C 程序中