当前位置: 首页 > 面试题库 >

当操作系统终止您的进程时返回代码

贺宏富
2023-03-14
问题内容

我想测试在32位操作系统上是否可以通过乘法进程使用超过4GB的内存(我的:具有1GB内存的Ubuntu)。

因此,我编写了一个小程序,该程序的malloc小于1GB,并对该数组进行了一些操作,并运行了该程序的5个实例。

事实是,我怀疑OS杀死了其中的4个,只有一个幸存下来并显示为“ PID:我完成了”。

(我已经尝试过使用小型阵列并进行5次打印,而且当我使用TOP查看正在运行的进程时,我只看到一个实例。)

奇怪的是-我在所有实例中都收到了返回代码0(成功?),包括那些据称被OS杀死的实例

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

在这种情况下,此返回码正常吗?

(如果是这样,则会降低我对“返回码”的信任…)

谢谢。

编辑:一些答案表明小程序可能存在错误,所以就在这里。派生并保存返回代码的较大程序较大,在这里将其上载时遇到了麻烦,但我认为(并希望)很好。

我还注意到,如果不是使用分叉程序运行它,而是使用’./a.out&./a.out&./a.out&./a.out&’(当./a.out是附带的小程序的二进制文件),我确实看到了一些“杀手”消息。

#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);
}

问题答案:

的方法返回状态(如通过返回waitwaitpidsystem)含有更多或更少的情况如下:

  • 退出代码,仅在进程正常终止时适用
  • 是否发生正常/异常终止
  • 终止信号,仅在过程被信号终止时适用

如果您的进程被OOM杀手杀死(显然会向您发送SIGKILL信号),则退出代码完全没有意义。

有关更多信息,请参见等待命令的手册页。



 类似资料:
  • Env:-Android6.0,华为智能手机 我的应用程序是一个IM客户端,它必须与服务器保持连接并从服务器接收消息。因此,只要网络连接可用,我就必须让它一直处于活动状态。 我使用前台服务使我的应用程序在后台保持活动状态。请参阅:android-keeping-a-background-service-alive-prevention-process-death此方法在android 4.1和4.

  • 我正在开发一个程序,在这个程序中,我使用了大量但有限的内存。内存在不同线程上运行时分配和释放。但是,我注意到程序的内存使用不会保持在指定的范围内。随着时间的推移,它会增加。我编写了以下示例程序来检查内存是否被释放回操作系统。一半分配的内存被释放以检查内存使用是否下降。 运行程序后,操作系统似乎不会回收释放的页面。分配内存和释放内存后,内存使用情况与linux中的“top”命令中的相同。它只是将这些

  • 更多面试题总结请看:【面试题】技术面试题汇总 进程是一个拥有资源和执行任务的单元体。进程拥有的资源包括:内存空间中的代码、数据等;I/O 资源;文件;处理机等。 线程是一个执行任务的单元体。线程只拥有处理机,线程之间共享进程的资源,如内存、I/O 等。 对比:   进程 线程 资源 进程是一个拥有资源和执行任务的单元体。 线程是一个执行任务的单元体,不拥有资源,线程之间共享地址空间 切换开销 开销

  • 本文向大家介绍C#操作windows系统进程的方法,包括了C#操作windows系统进程的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#操作windows系统进程的方法。分享给大家供大家参考。具体如下: 这段代码演示了如何根据进程名关闭进程和启动进程 希望本文所述对大家的C#程序设计有所帮助。

  • 主要内容:前提条件,面向读者,问题反馈本操作系统教程提供了操作系统的基本和高级概念。我们的操作系统教程是面向初学者,专业人士等来设计的。在完成对每个概念的深入研究之后,编写了本教程。 内容详细描述,并有能力回答您想要了解的大部分内容和问题。该教程还包含基于问题的一些示例,这些问题将帮助您以实际的方式解决问题。 操作系统可以被定义为用户和硬件之间的接口。它为用户提供了一个环境,使用户可以方便快捷地完成任务。 操作系统教程根据其功能(如进

  • 操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成