[英]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.