0

我正在开发一个节点应用程序,它允许客户端控制在服务器上运行的程序。程序必须始终在自己的终端窗口上运行。理想的情况概述如下:控制节点中的特定进程ID?

客户端点击一个按钮 - >命令在终端运行程序 - 运行>程序做一些事情

我不是太有经验丰富的节点,但我知道,我可以运行命令行使用ChildProcess事件发射器的脚本。我遇到的问题是如何告诉节点在特定进程上运行命令(即运行我试图操作的程序的命令)。有没有办法在特定的进程ID上执行命令?有没有办法检测所有当前进程和他们的ID?

任何建议或方向将不胜感激。

回答

0

当您创建子进程时,可以将其分配给一个变量,以便稍后可以引用它。在这种情况下,您可能希望将其添加到对象或数组中,以便可以引用一组正在运行的进程。

例如,您可以参考spawnexec的文档。

一个要发送到所创建的子进程的命令的方法是使用signals,如child.kill('SIGSOMETHING');

例如:

var spawn = require('child_process').spawn; 

function spawnChild() { 
    var cmd = spawn('cmd', ['-p1', 'param']); 

    cmd.stdout.on('data', function (data) { 
    console.log('stdout: ' + data); 
    }); 

    cmd.stderr.on('data', function (data) { 
    console.log('stderr: ' + data); 
    }); 

    cmd.on('close', function (code) { 
    console.log('child process exited with code ' + code); 
    }); 

    // Save a reference to this child 
    children.push(cmd); 
} 

// Spawn 5 children 
for (var i = 0; i < 5; i++) { 
    spawnChild(); 
} 

// Send a signal after 5 seconds 
setTimeout(function(){ 
    for (var i in children) { 
    var child = children[i]; 
    console.log('Sending signal to child with PID: ' + child.pid); 
    child.kill('SIGSOMETHING'); 
    } 
}, 5000);