【发布时间】:2015-10-06 10:30:06
【问题描述】:
我的项目的一个小背景:我们有任意数量的文件,每个文件需要一个单独的进程,然后需要使用 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 ... )。
非常感谢这里的一些指导!
【问题讨论】:
-
您将输出文件列为输入文件。你想要的是重定向 grep 的输出。您需要阅读上面的链接以了解如何操作
-
所以你的项目特别提到你不直接执行
grep。还有你做什么的?你直接执行grep。当它不起作用时,您仍然可以在此处询问,而不是阅读您的项目说明。请阅读您的项目说明。 -
谢谢 A.S.H. hvd,你没有任何帮助。