簡體   English   中英

在node.js上的服務器內部發出子進程

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM