【发布时间】:2014-07-16 13:41:12
【问题描述】:
我有一个 C 语言程序,它使用大量内存并运行了相当长的时间,最后它需要调用 system() 来调用一个简单的 shell 命令(它使用很少的内存),但由于overcommit 被禁用(并且缺少交换),对system() 的调用可能会由于可用内存不足而失败。
到目前为止,避免内存问题的唯一解决方案似乎是添加一些异步机制,例如在主进程中更早地调用system() 调用,然后让分叉的进程等待主进程稍后发送的数据。这样一来,fork 进程的内存占用就小得多。
我错过了什么吗?有没有更简单的方法来调用这个外部进程而不会导致内存过度使用问题?我看到有人提到vfork(),但他们似乎暗示这是一个过时的机制。
【问题讨论】: