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

C++ running grep in execv searches for executable path

本文关键字:搜索 可执行 路径 grep 运行 execv c++      更新时间:2023-10-16
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中。