gpt4 book ai didi

node.js - 如何知道子进程是否完成?

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:25 26 4
gpt4 key购买 nike

我尝试使用 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 对象提供了一个 Exit 事件,如 here 中所述。 。我会将每个命令创建为 spawn,而不是使用 write

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

第二个选项是通过 pidofpgrep 检查您的进程是否正在运行。

关于node.js - 如何知道子进程是否完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43700263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com