我想测试是否使用乘法进程我可以在32位O.S上使用超过4GB的RAM(我的Ubuntu:1GB RAM)。当操作系统杀死你的进程时返回代码
所以我写了一个小程序malloc稍小于1GB,并对该数组做一些操作,并运行该程序的5个实例vie叉。
事情是,我怀疑O.S杀死了其中4人,只有一人幸存并显示它是“PID:我完成了”)。
(我有小阵试了一下,有5印刷,还当我看与TOP正在运行的进程,我看到的只有一个实例。)
奇怪的是这个 - 我在所有的实例中收到了返回代码0(成功?),包括据称被操作系统杀死的代码
我没有得到任何按摩说明进程被杀害。
这种情况的返回码是否正常?
(如果是这样,它减少了在 '返回代码' ......我的事)
感谢。
编辑:一些答案在小程序中提出了可能的错误,所以在这里。分支和保存返回代码的较大程序比较大,而且我在这里无法上传,但我认为(并且希望)它没有问题。
而且我注意到,如果不是我的分岔程序运行它,我用终端运行” ./a.out & ./a.out & ./a.out & ./a.out &'(当./a.out是附加的小程序的二进制文件) 我确实看到一些'Killed'消息。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#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<REAPETS;++x2)
{
int y;
for(y=0;y<SIZE;++y)
x[y] = (y+my_pid)%256;
}
printf("%d: I'm over.\n",my_pid);
return(EXIT_SUCCESS);
}
......希望我能给予好评的意见:) – 2009-04-12 21:40:33