首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

进程退出时如何确保子进程退出

前言 子进程退出的时候,进程能够收到子进程退出的信号,便于管理,但是有时候又需要在进程退出的时候,子进程退出,该怎么办呢? 进程退出时,子进程会如何?...另外还可以观察到,该进程也是其他系统进程进程。 如何确保进程退出的同时,子进程退出? 既然如此,如何确保进程退出的同时,子进程退出呢?...或许我们可以在子进程进程之间建立通信管道,一旦通信异常,则认为进程退出,子进程自己也回收资源退出。但是这样做总觉得不是很正经。有没有已有的函数帮我们做这件事呢?prctl函数可以帮助我们。...内容很多,主要意思为:设置一个信号,当进程退出的时候,子进程将会收到该信号。 那么根据这个,我们完全可以在进程退出时,也给子进程一个退出的信号。...总结 有些情况下,我们常常需要父子进程共存亡,子进程退出时,进程可以通过wait捕捉子进程退出状态,但是进程退出时,子进程却难以得知。

12K21

Java进程异常退出

参考链接: Java中的异常 今天,内网测试服务器A总是运行一段时间就服务器进程自行退出了,给出了“Java Result :137”这样的错误码。上网查了一下这个137,感觉没有啥有价值的东西。...拿起手机,随意搜了一下“JAVA进程无端退出”,看到了一篇博客提出一个运维神指令dmesg(ps:有时候这个真是救命的神指令)可以查到一个进程异常信息,在故障诊断方面非常有用。...,这下舒了一口气,JVM进程退出的原因算是知道了,被系统杀掉了,难怪看不到log。       ...“top”,“free”,“ps”,甚至 JVM 等工具都没有针对在容器内执行高度受限的 Linux 进程进行优化。...总结:  1、在无异常log情况,应用退出,可以先考虑系统中断,dmesg查询相关信息  2、docker环境会影响应用,使用需要慎重,尤其是开发者和运维人员分离的情况下,开发者应该尽量了解到运维对系统的设置

3.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux 内核】进程管理 ( 进程状态 | 进程创建 | 进程终止 | 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 )

    文章目录 一、进程状态 二、进程创建 三、进程终止 ( 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 ) 一、进程状态 ---- Linux...Linux进程的 CPU 资源调度 | 进程生命周期 | 创建状态 | 就绪状态 | 执行状态 | 阻塞状态 | 终止状态 | 进程生命周期之间的转换 ) 博客 ; 二、进程创建 ---- 进程创建...| 执行异常退出 ) ---- 进程终止的方式 : 主动退出 : 主动调用 exit() 系统调用函数 主动退出 ; 自动退出 : 程序的 main 函数返回 , 自动退出 ; 从 main() 函数返回时..., 链接程序 会 为程序 自动添加 exit() 系统调用函数 ; 杀死进程 : 接收到 kill 命令 发出的 SIGKILL 信号 , 进程被杀死 ; 异常退出 : 进程执行出现异常 , 或 收到...自己不能处理的信号 , 被迫终止 ; 前两种是 进程主动退出 , 后两种是 进程被动退出 ; exit() 系统调用 函数 , 定义在 linux-5.6.18\kernel\exit.c 源码中 ,

    2.8K20

    Linux进程概念(二.查看进程进程与子进程进程状态详解)

    ps 是一个常用的 Unix/Linux 命令,用于显示当前系统中运行的进程信息。...在 Linux 中,每个进程都属于一个或多个组,getgid() 函数返回调用进程的有效组 ID。...在Unix/Linux系统中,可以使用 getpid() 系统调用来获取当前进程的PID,使用 getppid() 系统调用来获取当前进程进程的PID。...一旦进程再次被调度到 CPU 上执行,它将继续执行 printf() 函数,并输出用户输入的数据。然后进程执行完成,返回0,最终退出。...3.3Linux中状态初步认识 一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)进程的状态通常由几个不同的状态标识符表示。

    1.2K10

    Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)

    Linux进程退出 linux进程退出的方式 正常退出 从main函数返回return 调用exit 调用_exit 异常退出 调用abort 由信号终止 _exit, exit和_Exit的区别和联系..._exit是linux系统调用,关闭所有文件描述符,然后退出进程。...如果在 fork 的时候进程内存有缓冲内容,则这个缓冲会带到子进程,并且两个进程会分别 fflush (写出)一次,造成数据重复。...它接受进程终止代号作为参数,进程终止代号可能是系统调用exit_group(正常结束)指定的一个值,也可能是内核提供的一个错误码(异常结束)。...在进程获得已终止子进程的信息后,子进程的task_struct结构体才被释放(包括此进程的内核栈)。

    6K30

    用Supervisor实现进程守护,在异常退出时自动重启

    程序启动后,有些是以daemon的形式运行,但在意外退出后,如果不能及时重新启动,会有比较严重的影响。...比如Zimg在图片处理中由于某些图片处理失败,会导致zimg进程挂掉,影响正常的服务提供,并且只能在服务失效后才能察觉到。必须采用一个进程守护来时刻保证zimg进程挂掉后,再自动重新启动。...Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。...EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目...可以发现,在kill掉或pkill掉进程后,zimg程序依旧正常运转。也可以在UI界面上看到进程的运行状态: ?

    2K40

    聊一聊未捕获异常进程退出的关联

    之前的文章JVM 如何处理未捕获异常 我们介绍了JVM如何处理未捕获异常,今天我们研究一个更加有意思的问题,就是在JVM中如果发生了未捕获异常,会导致JVM进程退出么。...Process finished with exit code 0 看起来,子线程发生未捕获的异常不会导致进程退出(也不会影响其他的线程)。...提问:不对啊,我把你的代码放到Android项目中执行,会出现应用已停止的对话框,然后我的进程怎么就退出了呢,老哥,你的结论不对吧。...所以出现未捕获的异常,默认就会走到了Android系统默认设置的所有线程共用的处理者。 如果发生在主线程中呢 前面说的都是子线程,那么如果主线程出现未捕获异常进程应该会退出吧。...Process finished with exit code 1 进程并没有随着主线程中出现未捕获异常而理解退出,而是等到我们启动的Thread-0结束之后才退出的。

    1.4K10

    当被监测的进程异常退出后,如何启动 - WGCLOUD

    WGCLOUD可以监测我们主机服务器上运行的各种业务进程,系统进程当我们的进程异常退出或停止后,WGCLODU监控平台会发出通知告警,如下图片 那么我们如何在进程退出后,怎么启动进程呢?...以下三种方式均为WGCLOUD提供的功能1、如果是Linux监控主机,我们可以使用web ssh,连接到我们的主机,启动已下线的进程图片2、也可以通过【下发指令】模块来启动进程,这个可以选中多个主机,批量执行下发的指令图片...3、可以通过【自定义监控项】来实现,具体说明如下链接我们可以写一个shell脚本,具体逻辑为当发现进程退出时候,启动进程即可自定义监控项,WGCLOUD监控平台的agent会定期执行shell指令自定义监控项使用说明

    1.6K30

    探索进程和子进程

    进程、子进程 这个进程PID到底是什么?...先来认识一下fork函数: fork函数会以调用该函数的进程作为进程创建一个子进程 创建成功时,会在进程中返回子进程的PID,在子进程中返回0;如果失败,在进程中返回-1,没有子进程创建。...一个进程可以创建多个子进程,为了区分这些子进程,fork函数在创建子进程后,会给进程返回子进程的pid。子进程只需调用getppid()函数即可找到进程。...在任何平台,进程在运行的时候都是具有独立性的。也就是说一个进程退出、失败、崩溃了,都不会影响其他进程。...子进程可以把进程的数据全被拷贝一份,但是大部分数据对于子进程来说可能都是没用的,这就造成了浪费,所以操作系统只是把进程中数据层面的代码临时拷贝一份给子进程,即子进程创建后,会共享进程的代码和数据,

    12410

    L010Linux和androidNDK之linux避免僵尸进程,子进程退出的处理

    L010Linux和androidNDK之linux避免僵尸进程,子进程退出的处理 如果你在程序中fork出一个子进程,没有好好处理子进程退出后的相关事宜,那么就有可能召唤出传说中进程界的僵尸---僵尸进程...,并不能将其完全销毁) 僵尸进程是怎么样产生 在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程退出状态等信息供其他进程收集...它需要它的进程来为它收尸。...,但进程未结束之前,子进程将成为僵尸进程。...(1)当子进程结束之后,但进程未结束之前,子进程将成为僵尸进程进程结束后僵尸被init进程回收。

    3.1K40

    进程欺骗实践

    文章前言 监控进程和子进程之间的关系是威胁检测团队检测恶意活动的常用技术,例如,如果powershell是子进程,而Microsoft Word是进程,这是一种折中的行为,各种EDR可以很容易地检测到这种异常活动...,这时红队可以考虑使用进程PID欺骗作为逃避方法,Windows API调用"CreateProcess"允许用户传入一个用于分配PID的参数,它可以用于指定当前进程进程。...项目介绍 https://github.com/Al1ex/SelectMyParent image.png 进程欺骗 Step 1:选择进程并确定其PID image.png Step 2:之后执行以下命令进行进程欺骗...SelectMyParent.exe notepad 928 image.png Step 3:使用process Explor查看进程树,可以看到成功欺骗 image.png 参考链接 https

    1.4K20

    Linux进程为何要苦苦地知道子进程的死亡原因?

    白发人送黑发人 一个普遍的常识是,在Linux里面总是“白发人送黑发人”,子进程死亡,进程透过wait()等待子进程死亡,并清理子进程僵尸,当然进程也可以因此而获得子进程的死亡原因。...child process is killed by signal 2 如果我们把子进程中的pause()删除,改为直接退出_exit(1): ?...则进程探测到子进程死亡后,可打印它的退出状态: $ ....所以,这个过程应该由Linux的某种机制自动完成,比如如果init知道了httpd死亡的话,它可以内在地自动重新启动一个httpd进程。...比如,对于oneshot的服务(就是开机只需要运行一次的服务,比如开机进行某种设置,完成一个文件系统的check,完成了就自动退出进程)。

    2K20

    RTP之进程退出

    在《Task之任务的删除》里介绍了任务是如何退出的,那么进程呢?进程里可以启动多个任务,这些任务的存在与进程的存在是否有关系? 1 主任务返回,即main()函数执行return后,整个进程就会终止。...这样就证明了主任务返回时,整个RTP也就退出了 2 如果主任务的工作确实已经做完了,而其它任务还有工作要做怎么办?可以让主任务自己退出,而不是直接返回:调用taskExit() ?...4 在2这种情况,即主任务调用taskExit()后,RTP是什么时候退出的呢:RTP不能为空,当最后一个任务退出后,RTP退出! ? 在RTP中启动多个任务 ?...把之前的例子改一下,这次让多个任务不退出 ? 然后调用rtpDelete()删除RTP ?...这正是: 单任务可退出,无关它人调度。 主任务若返回,进程整体销毁。 我是泰山,专注VX15年! 欢迎关注VxWorks567 一起学习,共同进步!

    1.3K30
    领券