c++ - Linux:来自内存密集型进程的 system() 无需 fork

标签 c++ linux exec fork system

我在 60 GB Linux 机器上有一个大型 C++ 进程(使用 35+ GB RAM),需要 system() 来执行某些功能。但是,由于 system() 在内部 fork 并执行新进程,因此它需要的虚拟内存空间是原始进程 RAM 的两倍。

我知道我可以使用 sysctl 始终启用内存过度使用,从而允许我的进程 fork 。但是,是否有 system() 的替代方案可以执行新进程而不需要那么多虚拟内存?

最佳答案

如果您的实现包含 posix_spawn(),这是一个更可行的替代方案。

#include <spawn.h>

http://fixunix.com/unix/84486-difference-between-spawn-fork.html

关于c++ - Linux:来自内存密集型进程的 system() 无需 fork ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307345/

相关文章:

c++ - 反向功能超出了我的cpp程序的范围

linux - python 有没有办法知道我的系统中所有已安装的应用程序的版本(Windows 和 Linux 都是)?

php - 如何通过PHP执行批处理文件?

c++ - 重写 Qt 的 mousePressEvent 会破坏 moveEvent 参数

c++ - 从控制台删除最后打印的元素

linux - 链接 : with ld: cannot find -lc

python - pyximport 与 cgal 构建错误 : undefined symbol "__gmpq_equal"

python - 使用 exec 进行变量赋值是Pythonic吗?

python - 为什么 exec 在带有子函数的函数中不起作用?

c++ - 如何在打开 gdb 时添加额外的延迟