进程结束——资源回收

两种特殊状态:

(1)孤儿进程:没有危害,不需要处理。

(2)僵尸态进程:占用pcb,要处理。即回收资源。

一、回收资源

1、wait

        pid_t wait(int *wstatus)

功能:(1)获取子进程退出状态;(2)回收资源,会让僵尸态的子进程销毁。

wait本身是一个阻塞操作,会使调用者阻塞。调用进程,一般不做额外的事情。

        父进程要获得子进程的退出状态:

(1)子进程

        exit(退出状态值);只有最低8位有效,范围:【0~255】。

(2)父进程

wait(&status);获取到退出状态值。

WIFEXITED( )  先判断是否正常退出;WEXITSTATUS( )  获得退出状态值的原数字。

例如:正常退出时:

WIFSIGNALED( )先判断是否被一个信号结束;WTERMSIG( )获得被哪个信号结束的编号。

例如:异常结束时:

2、waitpid

        pid_t waitpid(pid_t pid(1) , int *wstatus(2) , int options(3))

等待子进程状态发生变化。调用进程,逻辑一般不受影响。

  (1) pid_t pid大于0时,表示等待指定pid号的子进程状态改变;等于-1时表示等待所有子进程

(2)int *wstatus表示获取到的子进程状态信息

(3)int options选项,①默认是阻塞时,传0;②可以不阻塞,传WNOHANG宏

wait(&wstatus)<==等价于==> waitpid(-1 , &wstatus , 0);

注意:(1)阻塞:会影响父进程处理逻辑;

        (2)非阻塞:父进程会去查看子进程状态改变,但如果没有发生变化,父进程不阻塞,整个程序继续往下。(必须套在循环中处理<轮询>)。

        (3)wait是一种阻塞调用;waitpid可实现非阻塞调用。

例如:当子进程存在时,父进程处于非阻塞状态下,会与子进程一同进行,父进程也打印。

           当子进程结束,程序结束,No child processes.

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ActivityManager是Android系统中非常重要的一个组件,负责管理系统中所有Activity的生命周期、进程管理、任务管理等。在本篇文章中,我们将深入了解ActivityManager框架的实现原理。 ## Activity的启动过程 在Android系统中,Activity是应用程序中最基本的界面单元。当用户点击应用程序的图标时,ActivityManager会负责启动应用程序并启动相应的Activity。下面是Activity的启动过程: 1. 应用程序进程启动:ActivityManager会创建一个新的进程来运行应用程序。 2. 应用程序的Application对象创建:在应用程序进程启动之后,ActivityManager会负责创建应用程序的Application对象。 3. Activity对象创建:当用户点击应用程序的图标并选择启动Activity时,ActivityManager会负责创建相应的Activity对象。 4. Activity的onCreate方法调用:ActivityManager会调用Activity对象的onCreate方法,完成Activity的初始化工作。 5. Activity的onStart方法调用:ActivityManager会调用Activity对象的onStart方法,将Activity显示给用户。 6. Activity的onResume方法调用:ActivityManager会调用Activity对象的onResume方法,让Activity成为用户交互的焦点。 7. Activity的生命周期结束:当用户退出Activity时,ActivityManager会负责销毁Activity对象。 ## 进程管理 在Android系统中,每个应用程序都运行在一个独立的进程中。ActivityManager负责管理所有进程,以确保系统的稳定和性能。 当应用程序被启动时,ActivityManager会为其创建一个新的进程并分配一定的内存资源。如果此时系统内存不足,ActivityManager会根据一定的策略来回收一些进程内存,以确保系统正常运行。 ActivityManager还负责监控进程的CPU使用情况和内存使用情况。如果一个进程的CPU使用率过高或者内存使用量过大,ActivityManager会考虑回收进程资源,以避免系统崩溃。 ## 任务管理 在Android系统中,任务是指一组相关的Activity。当用户启动一个应用程序时,ActivityManager会创建一个新的任务,并将应用程序的第一个Activity加入到该任务中。 当用户从一个Activity切换到另一个Activity时,ActivityManager会将前一个Activity加入到任务的后台,并将新的Activity显示给用户。当用户点击返回键时,ActivityManager会将当前Activity从任务中移除,并将前一个Activity重新显示给用户。 需要注意的是,当应用程序中的所有Activity都被销毁时,该应用程序的任务也会被销毁。这是因为Android系统中的Activity都是基于任务的,一个应用程序的所有Activity都属于同一个任务。 ## 总结 ActivityManager是Android系统中非常重要的一个组件,它负责管理系统中所有Activity的生命周期、进程管理、任务管理等。在本篇文章中,我们深入了解了ActivityManager的实现原理。熟悉ActivityManager的工作原理对于开发高质量的Android应用程序非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值