使用grep与execl()

时间:2015-10-06 10:30:06

标签: c++ c shell grep execl

我的项目的一个小上下文:我们有一个任意数量的文件,每个文件需要一个单独的进程,然后需要使用exec()调用进行搜索,以便每次使用特定的KEY时查找。我知道如何使用此命令从命令行使用grep:

grep -o KEY FILENAME.txt | wc -l > OUTPUT.txt

但我无法弄清楚如何在c ++中这样做。我发现这里有一个线程给了我这一行。

execl("/bin/grep","grep",pattern,filename,NULL);

它编译并运行所以我认为它可以工作,但问题是我需要输出模式发生到文件的次数,我尝试了下面的行,但预计它没有工作。它给出了这个错误" grep:out.txt:没有这样的文件或目录"

execl("/bin/grep", "grep",pattern,fileName,output,NULL);

以下是我项目这部分的方向。

  

你可以通过这个来做到这一点   系统调用exec(),为它提供shell可执行文件的路径(通常是/ bin / sh)   并且,作为/ bin / sh的参数,字符串-c和与搜索命令对应的字符串   (grep -o ...)。

这里的一些指导将非常感谢!

1 个答案:

答案 0 :(得分:0)

对于实际执行,就像在命令行上执行的那样:

grep -o KEY FILENAME.txt | wc -l > OUTPUT.txt

这意味着shell将采用行fork,解释并运行它。请注意,这将包括外卡扩展以及shell所做的全部内容。

然后当然如果你在完成后不想继续,你必须首先execl,因为bash如果成功启动程序就不会返回(即this.getSeachField().select(); )。