我这里有一些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?
答案 0 :(得分:6)
execl()
不会在$PATH
中搜索可执行文件。要么为它提供grep
命令的完整路径,要么使用搜索execlp()
的{{1}}。
$PATH
了解更多信息。
答案 1 :(得分:0)
也许找不到二进制文件。
在追加之前检查com包含的内容(它应该包含正确的路径,如/usr/bin/
,并带有尾随路径分隔符...)
尝试使用“/ usr / bin / grep”代替