Using grep with execl()
Using grep with execl()
我的项目的一点上下文:我们有任意数量的文件,每个文件需要一个单独的进程,然后需要使用exec()调用进行搜索,以查找每次使用特定KEY时。我知道如何从命令行使用grep,使用以下命令:
grep -o KEY FILENAME.txt | wc -l > OUTPUT.txt
但是我不知道如何在c++中做到这一点。我在这里找到了一条线,给了我这条线。
execl("/bin/grep","grep",pattern,filename,NULL);
它编译和运行,所以我认为它的工作原理,但问题是我需要输出的次数模式发生到一个文件,我尝试下面的行,但预期它没有工作。它给出了这个错误"grep: out.txt: No such file or directory"
execl("/bin/grep", "grep",pattern,fileName,output,NULL);
这是我这部分项目的方向。
您可以通过系统调用exec(),为它提供shell可执行文件的路径(通常是/bin/sh)并且,作为/bin/sh的参数,字符串-c和与搜索命令对应的字符串(grep -o…).
这里的一些指导将非常感激!
对于实际执行,您将在命令行中执行:
execl("/bin/sh", "/bin/sh", "-c", "grep -o KEY FILENAME.txt | wc -l > OUTPUT.txt")
这将意味着shell将获取grep -o KEY FILENAME.txt | wc -l > OUTPUT.txt
行,解释它并运行它。注意,这将包括通配符扩展和shell所做的所有事情。
然后,当然,如果你不想在它完成后继续,你将不得不首先fork
,因为execl
不会返回,如果它成功地启动程序(即bash
)。
相关文章:
- Problems with std::cin.fail()
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Issues with Win32 ReadProcessMemory API
- Qt with WinAPI MouseProc
- [[maybe_unused]] with structured_binding?
- Issue with WriteProcessMemory
- OpenCV RTP-Stream with FFMPEG
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- std::adjacent_difference with std::chrono time_point
- DLL Made with CMake 使程序崩溃
- QtCreator with C 库中的链接器问题
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- specialized std::default_delete with QQmlComponent
- VS2019 - Sudo Remote Debugging on Linux with Cmake project
- Inference pytorch C++ with alexnet and cv::imread image
- Pybind11: init<> with lambda
- Using grep with execl()