下面是一些将在Linux上执行的代码。它没有stdlib的spawnProcess的所有功能,它只是显示了基本的基础知识,但是如果你需要更多的东西,从这里扩展它并不难。

import core.sys.posix.unistd;

version(linux) {

// this function is Linux-specific

import core.stdc.config;

import core.sys.posix.signal;

// we can tell the kernel to send our child process a signal

// when the parent dies...

extern(C) int prctl(int, c_ulong, c_ulong, c_ulong, c_ulong);

// the constant I pulled out of the C headers

enum PR_SET_PDEATHSIG = 1;

}

pid_t mySpawnProcess(string process) {

if(auto pid = fork()) {

// this branch is the parent, it can return the child pid

// you can:

// import core.sys.posix.sys.wait;

// waitpid(this_ret_value, &status, 0);

// if you want the parent to wait for the child to die

return pid;

} else {

// child

// first, tell it to terminate when the parent dies

prctl(PR_SET_PDEATHSIG, SIGTERM, 0, 0, 0);

// then, exec our process

char*[2] args;

char[255] buffer;

// gotta copy the string into another buffer

// so we zero terminate it and have a C style char**...

buffer[0 .. process.length] = process[];

buffer[process.length] = 0;

args[0] = buffer.ptr;

// then call exec to run the new program

execve(args[0], args.ptr, null);

assert(0); // never reached

}

}

void main() {

mySpawnProcess("/usr/bin/cat");

// parent process sleeps for one second, then exits

usleep(1_000_000);

}

所以下级功能需要使用,但Linux确实有一个功能,做你所需要的。

当然,因为它发出了一个信号,你的孩子可能要处理,要关闭更优雅比默认的终止,但试试这个程序并运行ps而它睡觉,看cat运行,然后注意到猫死时父母退出。

Linux进程突然挂死,当主进程突然死亡时,我该如何杀死linux spawnProcess?相关推荐

  1. electron ipcRenderer渲染进程发送事件, ipcMain主进程监听事件

    ipcMain 从主进程到渲染进程的异步通信.它处理从渲染器进程(网页)发送出来的异步和同步信息. 从渲染器进程发送的消息到主进程的异步通信. 主进程: import { app, BrowserWi ...

  2. linux 服务hang住原因,Python主进程hang住的两个原因

    最近使用Python遇到两个非常不好定位的问题,表现都是Python主进程hang住.最终定位出一个是subprocess模块的问题,一个是threading.Timer线程的问题. subproce ...

  3. 【学习笔记】启动Nginx、查看nginx进程、查看nginx服务主进程的方式、Nginx服务可接受的信号、nginx帮助命令、Nginx平滑重启、Nginx服务器的升级

     1.启动nginx的方式: cd /usr/local/nginx ls ./nginx -c nginx.conf 2.查看nginx的进程方式: [root@localhost nginx] ...

  4. linux 网卡自动挂死,shell脚本自动检测网络掉线和自动重连

    在ppp移植成功后,有时会出现ppp掉线等情况.这篇文章写了一个自动检测连接网络的解决方法. 创建一个shell脚本,在里面添加一下内容.(记得给操作权限) #!/bin/sh //根据你自己的she ...

  5. linux主进程退出时,结束子进程

    简介 主进程创建p1, p2两个进程,在主进程结束同时也让子进程结束! 代码 #include <stdio.h> #include <signal.h> #include & ...

  6. linux系统编程之进程概念(操作系统---管理,进程创建,进程状态,进程优先级, 环境变量,程序地址空间,进程O(1)调度方法)

    系统编程: 进程概念->进程控制->基础IO->进程间通信->进程信号->多线程 进程概念 冯诺依曼体系结构----现代计算机硬件体系结构 冯诺依曼体系结构----现代计 ...

  7. python主进程退出时子进程也退出_主进程被杀死时,如何保证子进程同时退出,而不变为孤儿进程(三)...

    之前两篇文章讨论了进程意外退出时,如何杀死子进程,这节我们研究下在使用进程池multiprocessing.Pool时,如何保证主进程意外退出,进程池中的worker进程同时退出,不产生孤儿进程.如果 ...

  8. python进程的注意点(进程之间不共享全局变量、主进程会等待所有的子进程执行结束再结束)

    1. 进程的注意点介绍 进程之间不共享全局变量 主进程会等待所有的子进程执行结束再结束 2. 进程之间不共享全局变量 import multiprocessing import time# 定义全局变 ...

  9. MultiProcessing中主进程与子进程之间通过管道(Pipe)通信

    Python 中 Multiprocessing 实现进程通信 1. 如何建立主进程与子进程之间的通信管道? 2. 为什么一定要将Pipe中的某些端close()? 本文参考自:python 学习笔记 ...

最新文章

  1. 学习成长就到鸿蒙思维,庆国庆,迎中秋,鸿蒙教育享双节99元开启思维之旅!!...
  2. poj 3384 Feng Shui 半平面交
  3. Java 集合框架看这一篇就够了
  4. 用了十年的昵称badboy_怎样用5秒钟看清一对夫妻的真实感情状况?
  5. 微信小程序--数据存储
  6. 微软中山大学开源超强的视觉位置编码,涨点显著
  7. SQLServer 2012重启服务后,自增1的标识列一次增长了1000左右
  8. java获取文件视图_springmvc-直接访问视图文件
  9. 各类型土地利用图例_给排水系统各部件及图纸你还有多少不了解?
  10. Python批量Excel文件数据导入SQLite数据库的优化方案
  11. docker on spark
  12. GlusterFS分布式文件系统
  13. python3 抓包 解包_Python结构包,解包
  14. Java中Math对象的属性与方法
  15. I.MX6 android 禁止低电量自动关机
  16. 36.session
  17. Flash制作空战游戏
  18. Onenote实现OCR识别图片
  19. 一不做,二不休, 干脆把开局库更换的批处理文件也调试好放出来...
  20. 什么是Debian?

热门文章

  1. 细品经典:LeNet-1, LeNet-4, LeNet-5, Boosted LeNet-4
  2. 小白也能看懂的Matplotlib简明教程
  3. 时间有限我长话短说:3060显卡免费送啦!
  4. 3D鸟类重建—数据集、模型以及从单视图恢复形状
  5. 如何对DevOps数据库进行源代码控制
  6. IntelliJ IDEA 最常用配置,应用、永久激活
  7. autoconfig.xml与antx.properties一级application.properties之间的关系
  8. 一篇文章一张思维导图看懂Android学习最佳路线
  9. Virtual Earth API 在指定zoomLevel添加自定义图层
  10. 定制SPS实战记录 系列之一