【问题标题】:C++ running grep in execv searches for executable path在 execv 中运行 grep 的 C++ 搜索可执行路径
【发布时间】:2014-03-22 20:58:12
【问题描述】:
argv = {'/usr/bin/grep', '/usr/bin/grep', '-ri', 'test', '.', 0}    

pid_t pid = fork();
if (pid == 0) {

execv(argv[0], argv);

exit(0);
}
else {
  wait(NULL);
}

这就是我的代码。我只是想让 grep 命令运行。我遇到的问题是它认为第二个 /usr/bin/grep 是搜索模式。

我尝试将 argv 数组更改为仅包含一个 /usr/bin/grep,但出现错误并且不运行 grep。有什么帮助吗?

【问题讨论】:

  • 该代码根本无法编译。
  • 您可能想了解execv

标签: c++ linux bash exec fork


【解决方案1】:

execv 将命令作为第一个参数,因此您需要 "usr/bin/grep" 而不是 argv[0] 这是您正在运行的程序。同时删除argv中的第一个参数。

我还会检查grep 是否在/usr/bin 中,它通常在/bin 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多