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);