child_process.unref()

child_process.unref()
发布于
# 编程

child_process.unref()

在使用nodejs在使用子进程时有以下方式

child_process.spawn(command[, args][, options])

child_process.exec(command[, options][, callback])
child_process.execFile(file[, args][, options][, callback])

child_process.fork(modulePath[, args][, options])

的默认情况下,父进程会等待被分离的子进程退出。 为了防止父进程等待给定的 subprocess,可以使用 subprocess.unref() 方法。 这样做会导致父进程的事件循环不包含子进程的引用计数,使得父进程独立于子进程退出,除非子进程和父进程之间建立了一个 IPC 信道。


这时调用child_process.unref(),可以在不退出子进程的情况下,愉快的不阻塞父进程,使的父进程可以愉快的退出。

var child_process = require('child_process');
var child = child_process.spawn('node', ['child.js'], {
    detached: true, // 这里要设置成true
    stdio: 'ignore'  // 备注:如果不置为 ignore,那么 父进程还是不会退出
});
child.unref();


除了直接将stdio设置为ignore,还可以将它重定向到本地的文件。

var child_process = require('child_process');
var fs = require('fs');
var out = fs.openSync('./out.log', 'a');
var err = fs.openSync('./err.log', 'a');
var child = child_process.spawn('node', ['child.js'], {
    detached: true,
    stdio: ['ignore', out, err]
});
child.unref();


找到 0 条评论