我的项目的一个小上下文:我们有一个任意数量的文件,每个文件需要一个单独的进程,然后需要使用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 ...)。
这里的一些指导将非常感谢!
答案 0 :(得分:0)
对于实际执行,就像在命令行上执行的那样:
grep -o KEY FILENAME.txt | wc -l > OUTPUT.txt
这意味着shell将采用行fork
,解释并运行它。请注意,这将包括外卡扩展以及shell所做的全部内容。
然后当然如果你在完成后不想继续,你必须首先execl
,因为bash
如果成功启动程序就不会返回(即this.getSeachField().select();
)。