![](/img/trans.png)
[英]How to get the output of command executed using child_process in nodejs?
[英]How to interrupt child_process by a command given by parent process?
我目前正在處理一個項目,該項目要求用戶單擊“執行”按鈕以調用后端的 child_process 以執行耗時的任務。 代碼如下,
let child = child_process.spawn(//args);
let data = '';
let err = '';
for await(const chunk of child.stdout) {
data += chunk;
}
for await(const chunk of child.stderr) {
err += chunk;
}
return {"out": data, "err": err};
此處省略解碼。 child_process 的任務將在流程結束時輸出所有結果,因此在任務進行期間不會有任何輸出。
用戶界面有一個按鈕,用戶可以在任務執行時取消任務。 我曾嘗試if (cancelFlag) {child.kill('SIGTERM')}
后右child_process.spawn
,但它是行不通的。 我想 child_process 需要一個監聽器嗎?
非常感謝您的任何建議。
如果您使用的是 POSIX 系統,那么默認情況下向子進程發送 SIGTERM 應該會終止該進程。
但是,在 Windows 上 SIGTERM 僅可用於偵聽,默認情況下沒有行為https://nodejs.org/api/process.html#signal-events 。
如果你在 Windows 上編程,你應該能夠為 SIGTERM 信號添加一個監聽器
child_process.spawn 在用於中止進程 killSignal 的選項中接受信號和 killSignal 默認情況下是 SIGTERM,並且前面的答案中描述的解決方案
但這是一個帶有信號和中止控制器的示例
let abortController = new AbortController();
let child = ChildProcess.spawn("sleep", ["1"], {
signal: abortController.signal,
});
setTimeout(() => {
abortController.abort();
}, 300);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.