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

时间:2014-03-22 20:58:13

标签: 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。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

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

我还会检查grep /usr/bin/bin是否经常{{1}}。