调用execl时找不到grep

时间:2011-09-13 22:22:47

标签: c++ linux grep errno

我这里有一些C ++代码。我想在linux中执行grep程序。编译时,没有错误。

com.append("grep");
execl(com.c_str(), "-n", "-w", word.c_str(), list_files.at(i + 1).c_str(), NULL);

但是当我执行我的c ++程序时,什么都没有。然后我想用errno找到错误。

结果是2,我知道这意味着他找不到这个程序。

但是我应该怎么做才能从我的c ++程序中启动grep?

2 个答案:

答案 0 :(得分:6)

execl()不会在$PATH中搜索可执行文件。要么为它提供grep命令的完整路径,要么使用搜索execlp()的{​​{1}}。

$PATH了解更多信息。

答案 1 :(得分:0)

也许找不到二进制文件。

  • 在追加之前检查com包含的内容(它应该包含正确的路径,如/usr/bin/,并带有尾随路径分隔符...)

  • 尝试使用“/ usr / bin / grep”代替