在没有系统调用的情况下运行sed
running sed without system call in C
我正在编写C/C++代码,它所做的一件事就是替换一行带有句子UNIX_CODE_TOKEN=
的代码。我想我应该使用system()
来运行sed -i ...
。然而,我注意到system()
并不是很有效。因此,我来找你提出好的建议。
是否有一个C/C++内置函数可以在不使用system()
的情况下执行sed -i
?请不要告诉我在C++中使用fstream
或在C中使用FILE *
(fseek和lseek也没有帮助,因为我想替换一行中的特定单词),我决定不编写进行替换的函数。
感谢您的帮助/建议/回复。
system()通常是按照fork()来实现的,用于拆分进程,exec()用于在子进程中启动/bin/sh(或其他),而waitpid()则用于在父进程中阻止,直到子shell完成。在您的情况下,您可能需要自己实现,但直接执行()/bin/sed,而不是/bin/sh。
然而,正确地实现这一点是一项合理的工作。你是否真的对你的程序进行了基准测试和分析,以确定system()是否是一个性能问题?更有可能的是sed速度很慢——毕竟它必须访问一个速度很慢的磁盘——而且你的调查不正确地指向了系统()。你可能会发现,最快的方法确实是直接在程序中处理文件,这实际上不会让它总体上更快。
你想解决的更高层次的问题是什么?很有可能完全消除编辑文件的需要。
相关文章:
- 这个c++代码是如何在没有定义函数的情况下运行的
- 如果程序在没有 sudo 的情况下运行,gtk_init会导致 ubuntu 16.04 崩溃
- 如何在不闪烁的情况下运行ESP32的单元测试
- Qt qml - 在没有任何条件的情况下运行一行(while(true))
- while 循环是否在设置标志的情况下运行多次?
- 如果在不需要的情况下运行语句
- VS Code - 如何在不再次构建的情况下运行未更改的 c++ 文件
- 如何在不将其连接到终端的情况下运行'screen',以便我可以在C++ (qt) 应用程序中捕获输出?
- 我们可以在没有安装工具包的情况下运行CUDA加速程序
- opengl调用可以在没有GPU的情况下运行吗
- 在没有.NET框架的情况下运行.NET EXE应用程序
- 如何在不打开代码::块的情况下运行 c++ 程序
- 在没有系统调用的情况下运行sed
- 为什么在VS 2010 C++中,我的程序在调试器中运行良好时会崩溃,但在没有调试器的情况下运行时会崩溃
- OpenGL错误只在未经调试的情况下运行时出现,怎么可能呢
- 为什么可以在没有返回类型的情况下运行 /usr/include/c ++/5/bits/fstream.tcc 中
- 如何在不重载赋值运算符的情况下运行此代码
- Random_shuffle可以在没有库的情况下运行<algorithm>?
- 如何在不创建新进程的情况下运行程序集代码
- 如何在Windows中不显示cmd窗口的情况下运行带参数的外部程序