使用setrlimit如何知道程序已经超过了设置的时间和内存呢?

justPassBy
  • 572

我知道如果时间超过限制会发出SIGXCPU信号。
那么内存超过限制呢?会发出什么信号?
还有就是我想知道哪里可以查看该类型函数的文档。

回复
阅读 3k
1 个回答
terrance__chen
  • 22

用brk(2), mmap(2) and mremap 分配的内存受到RLIMIT_AS的限制,超出会报错(ENOMEM),栈溢出报SIGSEGV并杀死进程,你用man setrlimit查查,写得很清楚的呀。

{还有就是我想知道哪里可以查看该类型函数的文档。} 你是用linux吗?man setrlimit不就出来了,网上也有公开的man文档可以查。

RLIMIT_AS

          The maximum size of the process's virtual memory (address space) in bytes.  This limit affects calls to brk(2),  mmap(2)  and mremap(2),  which fail with the error ENOMEM upon exceeding this limit.  Also automatic stack expansion will fail (and gener ate a SIGSEGV that kills the process if no alternate stack has been made available via sigaltstack(2)). 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏