C++ 在 execv 中运行 grep 搜索可执行路径

标签 c++ linux bash exec fork

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 将命令作为第一个参数,因此您需要 "usr/bin/grep" 而不是您正在运行的程序 argv[0]。同时从 argv 中删除第一个参数。

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

关于C++ 在 execv 中运行 grep 搜索可执行路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22583504/

相关文章:

linux - 将命令输出放入字符串

regex - 如何使用带有 sed 和 awk 的 find 命令从文件中删除重复的 IP

c++ - 将虚函数与重载常规函数混合?

linux - 如何将变量传递到 Azure Databricks 群集初始化脚本中

linux - conda 更新/安装现在在我的终端中附带大量文本

linux - 如何在异常情况下强制 HTTP 转换为 HTTPS?

c++ - 将派生类 shared_ptr 作为参数传递给需要基类 shared_ptr 的函数

c++ - 在一个 Protocol Buffer 二进制文件中存储多条消息

c++ - 内存/线程泄漏,使用 WinSock2 开发简单的 HTTP 服务器

regex - 未终止的 `s' 命令,找不到我的错误