linux前台程序终止代码,linux – 当操作系统终止你的进程时返回代码

我想测试是否使用乘法进程我能够在32位O.S上使用超过4GB的ram(我的:Ubuntu,1GB内存).

所以我编写了一个小程序,mallocs略低于1GB,并对该阵列执行一些操作,并运行该程序的5个实例查询分叉.

问题是,我怀疑O.S杀死了其中的4个,只有一个幸存并显示出它是“PID:我已经完成了”).

(我用小阵列尝试了它并获得了5次打印,当我用TOP查看正在运行的进程时,我只看到一个实例..)

奇怪的是这个 – 我收到了所有实例中的返回码0(成功?),包括那些据称被O.S.杀死的实例.

我没有得到任何按摩说明过程被杀死了.

这种情况的返回码是否正常?

(如果是这样,它会降低我对’返回代码’的信任……)

谢谢.

编辑:一些答案表明小程序中可能存在错误,所以在这里.分叉和保存返回代码的较大程序较大,我在这里上传时遇到问题,但我认为(希望)没关系.

另外我注意到,如果不使用我的分叉程序运行它,我使用’./a.out&和终端运行它. ./a.out& ./a.out& ./a.out>’ (当./a.out是附加的小程序的二进制文件时)

我确实看到了一些“被杀”的消息.

#include

#include

#include

#include

#define SMALL_SIZE 10000

#define BIG_SIZE 1000000000

#define SIZE BIG_SIZE

#define REAPETS 1

int

main()

{

pid_t my_pid = getpid();

char * x = malloc(SIZE*sizeof(char));

if (x == NULL)

{

printf("Malloc failed!");

return(EXIT_FAILURE);

}

int x2=0;

for(x2=0;x2

{

int y;

for(y=0;y

x[y] = (y+my_pid)%256;

}

printf("%d: I'm over.\n",my_pid);

return(EXIT_SUCCESS);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值