var express = require('express');
var spawn = require('child_process').spawn;
var router = express.Router();
var proc_list = [];
var pid_list = [];
function find_pid(pid) {
var len = pid_list.length;
for (var i = 0; i < len; i++) {
if (proc_list[i]['pid'] == pid) {
return i;
}
}
return -1;
}
// create proces
router.post('/program', (req, res, next) => {
var cmd = req.query.cmd;
var args = req.query.args;
// console.log("req.query:"+JSON.stringify(req.query));
console.log("cmd:" + cmd);
console.log("args:" + args);
var argstring = args.split(" ");
var argslist = [];
for (var i = 0; i < argstring.length; i++) {
argslist.push(argstring[i]);
if (i != argstring.length - 1) {
argslist.push(" ");
}
}
child = spawn(cmd, argslist);
child.on('error', function (err) {
console.log(err);
});
var pid = child.pid;
console.log("cmd executed");
pid_list.push(pid);
proc_list.push({ 'pid': pid, 'obj': child });
res.send('' + pid);
});
// read process list
router.get('/program', (req, res, next) => {
console.log('get');
res.send(pid_list);
});
// update
// router.put('/program', (req, res, next) => {
// });
// delete
router.delete('/program', (req, res, next) => {
var pid = req.body.pid;
var val = find_pid(pid);
if (val != -1) {
pid_list.splice(val, 1);
proc_list[val].obj.kill();
proc_list.splice(val, 1);
}
res.send(pid + ' killed');
});
module.exports = router;