[英]How to know if a child procces is finished?
我尝试通过带有Node.js和socket.io的web构建一个bash终端,我需要知道命令是否完成。 像'cd someDirectory'这样的命令不会发出输出,我不知道它是否完成了。 如何知道命令是否完成? 如果posible为每个命令设置超时? 我有以下代码:
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对象提供一个退出事件这里 。 我会使用write
将每个命令创建为spawn
。
command.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
第二个选项是通过pidof
和pgrep
检查您的进程是否正在运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.