即使ChildProcess
被杀死之后(在exec
回调中),我怎么能使用它呢?
我尝试使用pidusage
模块,但仅在进程打开时有效。
我实际上尝试过的:
var proc = exec(execComm,(error, stdout, stderr) => {
if (error) {
callback({status: -1, reason:stderr });
}
var pidusage = require("pidusage");
pidusage(proc.pid,function(err,stat){
console.log(err,stat);
});
callback({ status:0, file: out });
});
但是为什么pidusage发送[Error: No maching pid found]
?
是因为此模块无法获取已经关闭的模块的信息吗?
以及如何在exec
回调中获取该信息?
答案 0 :(得分:0)
您可以将辅助程序绑定到应用程序的退出信号,然后读出内存使用情况,但是由于gc可能会在不可预测的时间运行,因此我不确定您会使用哪种用途。
const ExitHandler = () => { /* your code */ };
process.on( 'exit', ExitHandler.bind( null, { withoutSpace: false } ) ); // on closing
process.on( 'SIGINT', ExitHandler.bind( null, { withoutSpace: true } ) ); // on [ctrl] + [c]
process.on( 'uncaughtException', ExitHandler.bind( null, { withoutSpace: false } ) ); // on uncaught exceptions
答案 1 :(得分:0)
我相信您可以使用node-heapdump之类的东西在您的子进程中创建堆转储,您可以在事后检查。
这样,您还可以有多个转储,以便您可以检查一段时间内的内存使用情况。