Node.js 如何知道子进程是否已完成?

Node.js 如何知道子进程是否已完成?,node.js,spawn,Node.js,Spawn,我尝试通过web构建一个带有Node.js和socket.io的bash终端,我需要知道命令是否完成。一些命令,如'cd someDirectory'不发出输出,我不知道它是否完成。如何知道命令是否已完成?如果可能,为每个命令设置一个超时? 我有以下代码: var shell = spawn('/bin/bash'); var stdin = shell.stdin; shell.on('exit', function() { socket.disconnect(); }); shell

我尝试通过web构建一个带有Node.js和socket.io的bash终端,我需要知道命令是否完成。一些命令,如'cd someDirectory'不发出输出,我不知道它是否完成。如何知道命令是否已完成?如果可能,为每个命令设置一个超时? 我有以下代码:

var shell = spawn('/bin/bash');
var stdin = shell.stdin;

shell.on('exit', function() {
  socket.disconnect();
});

shell.on('close',function(){
  console.log('Close');
});

shell['stdout'].setEncoding('ascii');
shell['stdout'].on('data', function(data) {
  socket.emit('stdout', data);
});

shell['stderr'].setEncoding('ascii');
shell['stderr'].on('data', function(data) {
  socket.emit('stderr', data);
});

socket.on('stdin', function(command) {
  stdin.write(command+"\n") || socket.emit('disable');
});

stdin.on('drain', function() {
   socket.emit('enable');
});

stdin.on('error', function(exception) {
  socket.emit('error', String(exception));
});

提前感谢。

通常,spwan对象会提供一个退出事件,如下所述。我会将每个命令创建为
spawn
,而不是使用
write

command.on('exit', function (code) {
  console.log('child process exited with code ' + code);
});

第二个选项是通过
pidof
pgrep
检查进程是否正在运行。

通常,spwan对象提供一个退出事件,如所述。我会将每个命令创建为
spawn
,而不是使用
write

command.on('exit', function (code) {
  console.log('child process exited with code ' + code);
});
第二个选项是通过
pidof
pgrep
检查进程是否正在运行