[英]issue child process inside a server on node.js
我在C中有一个可执行库(sudo ./ads1256_test adc.txt),该库中的数据是从ADC获取的,同样,这些数据也自动保存在文本文件(adc.txt)中。
另一方面,我在node.js中有一个服务器(请参见代码),当按下网站中的按钮时,我想在其中执行该程序。 为此,我尝试使用子进程.exec('sudo ./ads1256_test adc.txt')来实现此过程,但是它不起作用。 它显然可以运行,但是文件中保存的值始终为零。 这与我在终端中执行相同命令时获得的结果完全不同。 如果有人可以帮助我,我将不胜感激。
//Importing the core modules
var express = require('express');
var path = require('path');
var sys = require('sys');
var fs = require('fs');
var util = require('util');
var sleep = require('sleep');
var app = express();
var exec = require('child_process').exec;
var spawn = require('child_process').spawn;
app.get('/', function(req,res){
res.sendFile(path.join(__dirname + '/public/index.html'));
});
//Static Directories
app.use(express.static(__dirname + '/public'));
app.post('/test', function (req, res) {
exec('sudo ./ads1256_test adc.txt');
});
//Server Starting
var server = app.listen(8080, function(err){
if(err){
console.log('Error starting http server');
} else{
console.log('Sever running at http://localhost:8080 ');
}
});
首先,将您的代码修复为-异步处理cp生成-显示错误
以树为例,可以使它适应二进制文件并检查响应,它可以帮助您继续前进。
app.post('/test', function (req, res) {
var cp = spawn('tree', []);
cp.stdout.pipe(res);
cp.stderr.pipe(res);
cp.on('close', function () {
res.end();
cp.stdout.unpipe();
cp.stderr.unpipe();
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.