【发布时间】:2010-10-25 14:53:25
【问题描述】:
如何才能知道它们中的任何一个是否正在发生,并导致 fork() 或 system() 返回错误?换句话说,如果 fork() 或 system() 返回错误,我可以检查 Linux 中的哪些内容来诊断为什么会发生该特定错误?
例如:
- 只是内存不足(导致 errno ENOMEM) - 使用“free”等检查内存使用情况。
- 没有足够的内存供内核复制父进程的页表和其他记帐信息(导致 errno EAGAIN)
- 是否存在全局进程限制? (也导致 errno EAGAIN?)
- 是否有每个用户的进程限制?我怎样才能知道它是什么?
- ...?
【问题讨论】:
-
澄清一下,当人们知道在 fork() 期间发生了诸如 EAGAIN 之类的错误时(errno == EAGAIN),您如何找出具体导致它的原因(是 RLIMIT_NPROC 吗?复制页表或任务结构时出错,如果是,为什么?你如何避免它?)
-
我还问了一个关于 Linux 中页表的不同但相关的问题:stackoverflow.com/questions/853736/…