每个进程其实都有一组资源限制,而这些资源限制会随着当前进程的fork而继承下来。
shell本身是有一组资源限制的,如果你在某个shell下直接执行一条命令,那么这个新进程一般就继承了shell的资源限制。
今天工作中遇到一个不确定的bug,为了测试那段代码到底会不会搞崩,就运行它到bug处,看看有没有出core文件==》
一直没有出core文件,后来发现是ulimit -c设置的是0,导致没有出core文件。
我们通常可以用ulimit来设置shell的资源限制:
man手册是这么描述的:
Provides control over the resources available to the shell and to processes started by it, on systems that allow such control.
先来看看一段错误的代码,这段代码将导致段错误:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str = "hello, world!";
str[0] = 0;
return 0;
}
编译并运行它:
[test1280@localhost 20