C++ 在C语言中无需系统调用即可运行sed

C++ 在C语言中无需系统调用即可运行sed,c++,c,bash,C++,C,Bash,我正在编写一个C/C++代码,它所做的一件事就是替换一行,该行的句子是UNIX\u code\u TOKEN=。我想我会使用system()来运行sed-I…。然而,我注意到system()效率不高。因此,我来向你们征求好的建议 是否有一个C/C++内置函数可以在不使用system()的情况下执行sed-i? 请不要告诉我在C++中使用 fStase或在C中使用文件>代码>(FSETH和LSEDK也不会有帮助,因为我想替换一行中的特定单词) 我决定不编写进行替换的函数 感谢您的帮助/建议/回复。

我正在编写一个C/C++代码,它所做的一件事就是替换一行,该行的句子是
UNIX\u code\u TOKEN=
。我想我会使用
system()
来运行
sed-I…
。然而,我注意到
system()
效率不高。因此,我来向你们征求好的建议

是否有一个C/C++内置函数可以在不使用
system()的情况下执行
sed-i
? 请不要告诉我在C++中使用<代码> fStase<代码>或在C中使用<代码>文件>代码>(FSETH和LSEDK也不会有帮助,因为我想替换一行中的特定单词) 我决定不编写进行替换的函数

感谢您的帮助/建议/回复。

system()通常是通过fork()来分割进程,exec()来启动子进程中的/bin/sh(或任何内容),以及waitpid()来在子shell完成之前阻止父进程。在您的情况下,您可能需要自己实现它,但是直接执行exec()/bin/sed而不是/bin/sh

然而,正确地实现这一点是一项合理的工作。您是否确实对您的程序进行了基准测试和分析,以确定system()是否是一个性能问题?更有可能的情况是,sed速度很慢——毕竟,它必须访问速度很慢的磁盘——而且您的调查不正确地指向system()。您可能会发现,最快的方法确实是直接在您的程序位中处理文件,但总体而言,这并不会使它更快

你想解决的更高层次的问题是什么?很有可能完全不需要编辑文件。

system()通常是通过fork()来分割进程,exec()来启动子进程中的/bin/sh(或任何内容),以及waitpid()来阻止父进程,直到子shell完成。在您的情况下,您可能需要自己实现它,但是直接执行exec()/bin/sed而不是/bin/sh

然而,正确地实现这一点是一项合理的工作。您是否确实对您的程序进行了基准测试和分析,以确定system()是否是一个性能问题?更有可能的情况是,sed速度很慢——毕竟,它必须访问速度很慢的磁盘——而且您的调查不正确地指向system()。您可能会发现,最快的方法确实是直接在您的程序位中处理文件,但总体而言,这并不会使它更快


你想解决的更高层次的问题是什么?很有可能完全不需要编辑文件。

好吧,总的来说没有问题,我只是想避免可能“咬我屁股”的问题或事情。如果执行“sed-i”所执行的函数需要更多的时间,那么我可能会选择system()方法。也许以后,如果他们有基准要求,我会认真考虑。谢谢:)好吧,总的来说没有问题,我只是想避免可能“咬我屁股”的问题或事情。如果执行“sed-i”所执行的函数需要更多的时间,那么我可能会选择system()方法。也许以后,如果他们有基准要求,我会认真考虑。谢谢:)