【发布时间】:2018-01-31 08:48:58
【问题描述】:
下面是我编写的代码,用于通过发送 AJAX 请求在 UNIX 中执行名为 mqValidation.sh 的脚本。这会产生一个新的子进程,当子进程退出时,它会发送一个文本文件响应,其中显然包含脚本的输出。但是,我在这里面临的问题是,由于脚本需要很长时间才能完成,所以在第一个子进程退出之前会产生一个新的子进程,这意味着脚本正在再次执行。
var express = require('express');
var app = express();
var cp = require('child_process');
app.post('/triggerMQ', function(req,res){
ls = cp.spawn('./mqValidation.sh',req.body.envs,{cwd:"./MQValidation"});
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
ls.on('exit', (code) => {
console.log("Child process exited");
res.sendFile(__dirname+'/MQValidation/html.txt');
});
});
app.listen(8000, function(){
console.log("app listening at port 8000.....");
});
请帮忙!!
【问题讨论】:
-
以及它应该如何工作?只有当您多次点击 URL 时才会再次创建新的子进程,这意味着一切都按预期工作
-
U 表示浏览器再次发送请求,因为它没有收到任何响应
-
@smnbbrv 你的意思是请求正在被浏览器重试
标签: node.js ajax shell child-process