javascript - 如何在 10 秒后杀死 node.js 中的子进程?
问题描述
我正在制作一个在线代码运行器,它运行良好,但是当它运行到无限循环时它并没有停止,所以如果它执行超过 10 秒,我想杀死这个子进程。10s后如何杀死exec进程?
export const javascriptExecuter = (data, input) => {
return new Promise((resolve, reject) => {
const fileName = "code.js";
saveFile(fileName, data).then(() => {
fs.writeFile("jsinput.txt", input, (err) => {
if (err) {
reject("internal server error ...");
}
});
});
setTimeout(() => {
// I WANT TO KILL THE PROCESS AFTER 10 SEC IF IT IS RUNNING **********
}, 10000);
exec("node " + fileName + " < " + "jsinput.txt", (err, stdout, stderr) => {
if (err) {
resolve({
err: true,
output: err,
error: stderr,
});
}
resolve({
err: false,
output: stdout,
});
});
});
};
解决方案
exec
有一个timeout
可以用于此的选项(请参阅文档)。无需特殊代码:
exec("node " + fileName + " < " + "jsinput.txt", {timeout: 10000},
(err, stdout, stderr) => { ... });
推荐阅读
- python - Python:将日志文件目录作为参数传递
- unity3d - 如何在指定的旋转中发生一些事情,我逐渐走向并可能过度射击?
- node.js - Why Can't I Fetch a Webpage (With NodeJS and Node-Fetch)?
- sql - PostgreSQL 是否提供类似于 SQL Server 更改跟踪的更改跟踪功能?
- javascript - gotoDate fullcalendar 在打字稿中不起作用
- java - 在片段中初始化视图
- git - git checkout 不会删除新添加的文件
- vue.js - 使用 Vue 在地图上显示路线
- c - 在汇编中计算字符串中的“0”
- c# - Razor Pages 路由仅使用一个参数,而不是两个