首页
学习
活动
专区
圈层
工具
发布

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

前言 子进程退出的时候,父进程能够收到子进程退出的信号,便于管理,但是有时候又需要在父进程退出的时候,子进程也退出,该怎么办呢? 父进程退出时,子进程会如何?...内容很多,主要意思为:设置一个信号,当父进程退出的时候,子进程将会收到该信号。 那么根据这个,我们完全可以在父进程退出时,也给子进程一个退出的信号。...if (pid == 0) { /*父进程退出时,会收到SIGKILL信号*/ prctl(PR_SET_PDEATHSIG,SIGKILL);...可以看到,由于加入了 prctl(PR_SET_PDEATHSIG,SIGKILL); 在父进程退出时,子进程将会收到SIGKILL信号,而进程收到该信号的默认动作则是退出。...总结 有些情况下,我们常常需要父子进程共存亡,子进程退出时,父进程可以通过wait捕捉子进程的退出状态,但是父进程退出时,子进程却难以得知。

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

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

    程序启动后,有些是以daemon的形式运行,但在意外退出后,如果不能及时重新启动,会有比较严重的影响。...比如Zimg在图片处理中由于某些图片处理失败,会导致zimg进程挂掉,影响正常的服务提供,并且只能在服务失效后才能察觉到。必须采用一个进程守护来时刻保证zimg进程挂掉后,再自动重新启动。...Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。...(Zimg—轻量级图片服务器搭建利器) [root@localhost ~]# mkdir /etc/supervisor/ [root@localhost ~]# echo_supervisord _...可以发现,在kill掉或pkill掉进程后,zimg程序依旧正常运转。也可以在UI界面上看到进程的运行状态: ?

    2.8K40

    破解棋牌多开时遇到的一个问题:调试时大厅进程总是退出

    今天破解一个棋牌游戏多开限制,把互斥体和窗口查找都解除以后,运行大厅程序最后还是会退出。后来发现,不管是不是多开,用OD调试该程序都是100%的退出。...经过多番折腾,发现这个游戏的运行过程是这样的:启动大厅程序gameplaza.exe时,该进程会启动update.exe,然后自身退出,然后由update.exe进程再启动gameplaza.exe。...用OD打开update.exe,然后下断点:bp CreateProcessW,发现该程序启动gameplaza.exe时带了UPDATED这个参数,这才恍然大悟。...原来gameplaza.exe进程运行时会检测有没有UPDATED这个参数,如果有,就会正常运行下去,如果没有,就会启动update.exe后自身退出。...相关代码如下:(一开始看到这部分代码时还没明白是什么意思,原来是这样) image.png 棋牌多开破解

    1.5K50

    玩转服务器---基本工具的使用

    点击左上方按钮,会弹出站点管理,在这里可以配置连接你的云服务器,因为云服务器时采用SSH方式进行登录的,所以协议选择SFTP - SSH File Transfer Protocol,主机填写我们服务器的公网...选择我们刚才创建的新连接,点击连接,用户名为root,密码为服务器密码,FileZilla,XShell与putty其实都是连接云服务器进行操作,所以配置信息都是一致的。 ? ? ?...命令重启xxx.js进程 pm2 stop all 停止所有进程 pm2 stop xxx.js 停止xxx.js进程 pm2 stop 0 停止id为0的进程 pm2 list 查看所有当前正在运行的进程...然后使用pm2 list可以看到我们当前有一个进程属于启动状态,status就是进程的状态,online就代表正常启动成功,error就代表代码出错,可以查看日志看报错信息,stop就代表进程属于停止状态...更改完配置文件保存退出,回到FileZilla确认我们刚才的更改操作,然后在XShell使用命令nginx -s reload重新加载配置文件。 ? 这样我们前端部署功能基本已经完成了。

    3.5K10

    Python TCP服务器v1.6 - multiprocessing多进程及Ctrl-c(SIGINT)退出

    TCP服务器v1.2 - 服务端新增用户登录注册(json, md5加密) v1.3 : python TCP服务器v1.3 - 服务器抗压测试及关闭套接字处理 v1.4 : python TCP服务器...| 多线程threading 与 多进程multiprocess 线程:所有的线程运行在同一个进程中,共享相同的运行环境。...并且退出线程很麻烦. 进程:程序的一次执行(程序载入内存,系统分配资源运行)。每个进程有自己的内存空间,数据栈等,进程之间可以进行通讯,但是不能共享信息。...退出进程模块中有一个函数Process.terminate()可以直接调用 | signal Python中要捕获信号,需要signal包来处理。...几个常用信号: SIGINT 终止进程 中断进程 (control+c) SIGTERM 终止进程 软件终止信号 SIGKILL 终止进程 杀死进程 SIGALRM 闹钟信号 | 使用 from

    98440

    shell 常用命令

    expect eof:用来退出 spawn 启动的子进程,返回到当前进程环境,与 spawn 成对出现 expect:用于接收进程的输出信息(输出重定向到 expect),如果接收的字符串与期待的不匹配...通常来说,借助 XShell 的可视化配置,就足够连接上服务器了,但有些服务器,只能通过跳板机连接,此时就需要先登录上跳板机,然后再跳板机上使用 ssh 命令来连接服务器 当然,XShell 也可以通过...、上传的命令 sz,rz 通常是本机上装了个 XShell 工具,然后用于两机之间的文件通信 但有时候,是需要在远程多个服务器之间进行文件通信,这时候就用不了 XShell,也就用不了 sz, rz 命令了...脚本,将 jar 发送到另一台项目运行的服务器上,先停止旧项目的执行,然后移除旧 jar 包,执行新 jar 包,启动后端项目 package.sh 打包脚本 #!...send "yes\n" exp_continue } "password" { send "$password\n" } } # jar 发送完毕就退出子进程

    1.8K21

    如何在Bash中等待多个子进程完成,并且当其中任何一个子进程以非零退出状态结束时,使主进程也返回一个非零的退出码?

    问题 如何在 Bash 脚本中等待该脚本启动的多个子进程完成,并且当这其中任意一个子进程以非零退出码结束时,让该脚本也返回一个非零的退出码? 简单的脚本: #!.../bin/bash for i in `seq 0 9`; do calculations $i & done wait 上述脚本将会等待所有 10 个被创建的子进程结束,但它总会给出退出状态 0...我应该如何修改这个脚本,使其能检测到被创建子进程的退出状态,并且当任何子进程以非零代码结束时,让脚本返回退出码 1?.../usr/bin/env bash # 这是一个特殊的 sleep 函数,它将睡眠的秒数作为"错误代码" # 或"返回代码"返回,以便我们可以清楚地看到,实际上 # 我们在每个进程完成时确实获取了它的返回代码...[ $rc -ne 0 ] && break # 若子进程以非零退出码结束,则跳出循环 done #echo $rc exit $rc 将代码保存为文件 wait_procs_demo.sh,再运行测试

    89100

    Linux||后台运行及查看状态命令

    如果你正在运行一个进程,而且你觉得在关闭终端时该进程还不会结束,那么可以使用nohup命令,使服务器能够在你关闭终端之后继续运行相应的进程。...&和nohup &:指在后台运行,当用户退出账号或终端时,命令将一起退出。...bash 1.sh & #运行1.sh,当退出服务器时,该命令停止 nohup:不挂断的运行,注意并没有后台运行的功能,指用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,即使我们断开...nohup bash 1.sh #将bash 1.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell...退出当前session程序将依然继续运行。

    9.6K40

    Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day21】—— Linux命令

    kill   kill命令默认的信号就是15,也就是 kill -15 ,被称为优雅的退出。   当使用kill -15时,系统会发送一个SIGTERM的信号给对应的程序。...应用程序的选择有三种: 立即停止程序 释放响应资源后停止程序 忽略该信号,继续执行程序   因为kill -15信号只是通知对应的进程要进行"安全、干净的退出"。   ...大家使用Linux操作系统时,或许都遇到过以下类似场景。...场景1:我用xshell通过 telnet/ssh 远程登录服务器,跑脚本或执行一些耗时较长的任务,有时会因为网络不稳定或手贱等原因断开我的控制终端(如:xshell、sourceCRT)的远程连接状态...应对方式:1、nohup 命令 & 2、screen   我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程(包括sshd及其子进程)。

    1.3K20

    【Linux网络】进程间关系与守护进程

    在前面的文章中,我们的服务器跑起来之后,实际上并不是会一直在运行,为什么这么说呢?因为受我们XShell的限制,只要我们将XShell关闭,我们运行的服务器也就中断了。...现实中我们使用的软件肯定不是这样的,这些软件的服务器正常情况下会在主机上一直运行。所以我们这篇文章就来介绍一下如何做到 1..../proc 可以发现通过 Ctrl+Z 将作业挂起, 该作业状态已经变为了停止状态 作业切回 如果想将挂起的作业切回,可以通过 fg 命令, fg 后面可以跟 作业号 或 作业的命令名称 。...参数 -l 则显示作业的详细信息 参数 -p 则只显示作业的PID 参数 -r 只显示运行中的作业 参数 -s 只显示停止的作业 参数 -n 显示状态变化的作业 (只显示自上次通知后状态发生变化的作业...孤儿进程特性:其父进程在 fork() 创建子进程后立即退出,使守护进程被 init 进程(PID=1)接管,成为孤儿进程。

    17910

    在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)

    前言: 在默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器。不过,我们可以配置该守护进程,以便在该守护进程不可用时容器仍在运行。这种功能称为实时恢复。...实时还原选项有助于减少由于守护进程崩溃、计划中断或升级而导致的容器停机时间。...kill -SIGHUP $(pidof dockerd) 3.检查上面的配置是否成功 docker info | grep -i live 4.重启Docker,此时重启Docker时就容器就不会停止了...配置是否成功 [root@localhost ~]# docker info | grep -i live Live Restore Enabled: true 5.重启Docker,验证容器是否会停止...32分钟,容器并没有在我们重启Docker时停止,而是一直保持运行状态 。

    6.4K20

    systemd --user进程CPU占用高问题分析

    (简体中文)》文档,我们可知如下图信息: 作用: systemd 会给每个用户生成一个 systemd 实例,用户可以在这个实例下管理服务,启动、停止、启用以及禁用他们自己的单元。...只要用户还有会话存在,这个进程就不会退出;用户所有会话退出时,进程将会被销毁。”。...根据上面这段话,我们可以猜测:ssh登录时可以创建systemd进程,ssh退出登录时可以销毁systemd --user进程。 怀着这个猜测,我们进行下面的研究分析。...: web端连接的虚拟机终端,直接点“X”号关闭窗口,登录用户对应的systemd进程都不能被销毁,exit命令退出终端登录可以销毁,Xshell无此问题。...2.systemd进程为何未被销毁:web端连接的虚拟机终端,直接点“X”号关闭窗口,登录用户对应的systemd进程都不能被销毁,exit命令退出终端登录可以销毁,Xshell无此问题。

    3.9K51

    【Linux网络编程】:守护进程,前台进程,后台进程

    1.守护进程 1.1前台进程??后台进程??守护进程?? 如果我们在Xshell上启动一个服务器程序,正常情况下是前台进程,加上&会变成后台进程。...但是当我们关闭Xshell终端的时候,前台进程会关闭,后台进程会受影响。而且服务器是要长期运行,不能关闭的。 1.2特点: ●无控制终端:脱离控制终端,避免收到终端的干扰,它是和客户端进行交流的。...和Xshell终端摆脱了联系。 ●不占用前端资源:Xshell只允许一个前台进程存在,守护进程不占用前台资源,能正常bash执行其他指令。...2.当有前台进程时,bash进程会被换到后台。此时输入的命令是给此时在运行的前台进程。当前运行的前台进程不接收处理输入的命令,所以不能执行命令。 2.概念解释: PPID:父进程。...问题1: 进程组的组长不能变成守护进程 创建子进程,父进程退出,子进程向后运行,子进程就不是进程组组长了。 问题2: 因为守护进程没有与终端关联,没有输入,输出。

    1K10

    ubuntu上web项目的部署,:uwsgi, uwsgi + nginx, uwsgi+nginx分布式部署

    在ubuntu上安装xshell和xftp的服务器实现远程访问和文件传输。...使uwsgi服务器停止运行: uwsgi --stop uwsgi.pid 检查服务是否停止: ps -ef|grep uwsgi 修改uwsgi.ini文件: 将http注释掉,修改为:...保存 退出一下nginx nginx -s quit 再启动nginx nginx 使用xshell另外开两个链接窗口分别进入两个shopping项目: tail -f uwsgi.log...备注: 默认情况下, nginx的负载均衡,请求轮询发给所有的后端服务器 一般会把项目部署多份uwsgi服务器,当有内容需要更新的时候,先进入一个项目的主目录停止一个uwsgi服务器uwsgi --...: uwsgi --ini uwsgi.ini uwsgi服务器的停止: uwsgi --stop uwsgi.pid 退出nginx: nginx -s quit 启动nginx: nginx

    1.3K20
    领券