簡體   English   中英

在Node中控制特定的進程ID?

[英]Controlling a specific process id in Node?

我正在開發一個節點應用程序,它允許客戶端控制服務器上運行的程序。 該程序必須始終在其自己的終端窗口上運行。 理想情況概述如下:

客戶端單擊按鈕->在終端運行程序中運行命令->程序執行某些操作

我對節點沒有太多的經驗,但是我知道我可以使用ChildProcess事件發射器運行命令行腳本。 我遇到的問題是如何告訴節點在特定進程上運行命令(即運行我要操縱的程序的命令)。 有沒有一種方法可以在特定的進程ID上執行命令? 有沒有一種方法可以檢測所有當前進程及其ID?

任何建議或方向將不勝感激。

創建子進程時,可以將其分配給變量,以便以后可以引用它。 在這種情況下,您可能需要將其添加到對象或數組中,以便可以引用一組正在運行的進程。

您可以參考spawnexec的文檔以獲取示例。

向創建的子進程發送命令的一種方法是使用信號 ,例如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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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