【问题标题】:How to use execl as replacement for system如何使用 execl 作为系统的替代品
【发布时间】:2016-04-30 00:15:07
【问题描述】:
int main(void)
{
    execl("echo", "test");
    return 0;
}

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

【问题讨论】:

  • 不知道出了什么问题,抱歉,您是否查看了execl 的手册页以获取使用信息?
  • 您需要仔细阅读手册,以确定哪些execxxx 函数最适合您的需求以及它们接受哪些参数。您可能更喜欢execlp,例如:execlp("echo", "echo", "test", nullptr);。这会检查系统 PATH 以找到可执行文件。

标签: c++ execl


【解决方案1】:

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

这对我有用:

#include <unistd.h>

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

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

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    相关资源
    最近更新 更多