簡體   English   中英

子進程沒有被殺死 - Node js(在 Electron js 應用程序,windows 內)

[英]Child process not killed - Node js ( inside Electron js app, windows)

我試圖在 4 秒后停止此命令,但它不會停止子進程(在 electron-js 應用程序中運行,windows )

child = child_process.spawn("ping google.com -t", {
  encoding: 'utf8',
  shell: true
});

child.stdout.on('data', (data) => {
  //Here is the output
  data=data.toString();
  
  console.log(data)
});


setTimeout(function() {
  console.log('Killing Your child', child.pid);
  child.kill()
}, 4 * 1000);

超時 4 秒后運行,它記錄消息但從不停止進程

我嘗試在 kill() 中使用標簽,例如“SIGINT”或“SIGKILL”

我也嘗試在沒有超時的情況下運行...

通過查看子進程的官方文檔,我稍微修改了您提供的示例,使其看起來仍然對我有用。 請注意, ping -t標志需要您未提供的參數。

以下在 Node LTS (16.15.1) 和最新版本 (18.4.0) 上對我有用(程序在 4 次 ping 后退出):

const { spawn } = require('child_process');

const child = spawn("ping", ['www.google.com'], {});
child.stdout.on('data', (data) => { console.log(data.toString()); });

setTimeout(() => {
  console.log('Killing Your child', child.pid);
  child.kill();
}, 4000);

shell: true不適用於.kill() ,正如您在這篇文章的答案中看到的那樣:

嘗試使用 shell tr​​ue 和分離的 true nodejs 終止生成進程

我需要更換:

child.kill() 

  child_process.spawn("taskkill", ["/pid", child.pid, '/f', '/t']);

暫無
暫無

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

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