如何检测节点生成的进程是否仍在运行?

die*_*lar 7 spawn node.js

我可以产生一个像这样的过程:

var spawn = require('child_process').spawn;

var topicListener = spawn('python', ['topic_listener.py','Node.js'], {env: {
    TWITTER_CONSUMER_SECRET: process.env.TWITTER_CONSUMER_SECRET,
    TWITTER_CONSUMER_KEY: process.env.TWITTER_CONSUMER_KEY,
    TWITTER_TOKEN_SECRET: process.env.TWITTER_TOKEN_SECRET,
    TWITTER_ACCESS_TOKEN: process.env.TWITTER_ACCESS_TOKEN
}});

topicListener.stdout.on('data', function (data) {
    console.log(data.toString());
});

topicListener.stderr.on('data', function (data) {
    console.log(data.toString());
});

topicListener.on('close', function (code) {
    console.log("EXITED " + code);
});
Run Code Online (Sandbox Code Playgroud)

所以当然我可以异步控制它,.on(close, ...)但是有没有其他方法可以控制一个进程是否还活着?

Ben*_*ler 5

topicListener.on('exit', function (code) { 
 topicListener = null;
 console.log("EXITED " + code);
});
Run Code Online (Sandbox Code Playgroud)

如果topiclistener为null,则进程消失


n_r*_*rao 1

spawn('python', ['topic_listener.py','Node.js']..返回子进程对象。用于topicListener.pid查找与进程关联的唯一 ID(如果该进程还处于活动状态)。