2016-12-19 4 views
0

私は実行可能なライブラリをC言語(sudo ./ads1256_test adc.txt)に持っていますが、データはADCから取得され、同様にこれらのデータは自動的にテキストファイル(adc。 TXT)。node.js上のサーバ内で子プロセスを発行します

一方、Webサイトのボタンを押したときにこのプログラムを実行したい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 '); 
    } 
}); 

答えて

0

まず最初にまず、 にあなたのコードを修正 - 非同期的に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(); 
    }); 
}); 
関連する問題