V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nonsense
V2EX  ›  Node.js

请教 spawn 出来的进程+子进程如何全部 kill 掉?

  •  
  •   nonsense · 2017-11-12 23:39:12 +08:00 · 4793 次点击
    这是一个创建于 2595 天前的主题,其中的信息可能已经有所发展或是发生改变。
    linux 下通过 spawn 运行的 X 进程,该 X 进程自己又会生成子进程
    7 条回复    2017-11-13 22:53:37 +08:00
    airqj
        1
    airqj  
       2017-11-13 00:09:58 +08:00 via Android
    reboot
    简单粗暴
    msg7086
        2
    msg7086  
       2017-11-13 04:39:13 +08:00
    用 cgroup 管理?
    wakiki
        3
    wakiki  
       2017-11-13 08:11:43 +08:00 via iPhone
    负的 process id
    pagxir
        4
    pagxir  
       2017-11-13 08:34:00 +08:00
    建组,然后直接杀进程组吧。
    dorothyREN
        5
    dorothyREN  
       2017-11-13 09:18:38 +08:00   ❤️ 1
    pkill processName
    metrue
        6
    metrue  
       2017-11-13 13:25:49 +08:00   ❤️ 1
    ```
    const spawn = require('child_process').spawn;
    const script = `${__dirname}/timeout_task.sh`;
    const p = spawn(script, { detached: false, shell: true });

    p.stdout.on('data', (data) => {
    // do something
    });

    p.stderr.on('data', (data) => {
    // do something
    });

    p.on('exit', (err) => {
    // do something
    });

    setTimeout(() => {
    console.log(process.kill(-p.pid, 'SIGKILL'));
    }, 1000);

    ```
    zqjnew
        7
    zqjnew  
       2017-11-13 22:53:37 +08:00   ❤️ 1
    A 进程里开 fork B 进程,B 进程里再开 N 进程,关闭,直接关 B 进程即可
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2825 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 07:08 · PVG 15:08 · LAX 23:08 · JFK 02:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.