繁体   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