我正在实现一个程序,它可以通过将JSON对象输出到文件来保存正在运行的进程的“会话”。我想在用户点击Control + C时发生这种保存。
我已按如下方式实施:
process.on('SIGINT', function() {
console.log('\nCaught Control+C. Saving session...');
filename = 'session_'+randomString(10)+'.saved';
fs.writeFileSync(filename, JSON.stringify({
'jobs': jobs,
'config': config,
'verbose': verbose,
'max_retries': max_retries
}), function(err) {
if (err) {
console.log('ERROR while saving session file!');
console.log(err);
return;
}
console.log('The session file was successfully saved to "'
+ filename + '"!');
process.exit();
});
});
我希望最后console.log
行输出The session file was successfully saved to session_blabla123.saved!
,但不会打印消息。 文件已正确保存,这不是问题所在。我只想留言显示在终端上。
我可以让程序在退出之前等待几秒钟,如果这样可以解决问题。我也尝试过:
console.log('The session file was successfully saved to "'+ filename + '"!');
setTimeout(function() {
process.exit();
}, 2000);
但程序仍然会立即退出。我也考虑过冲洗控制台输出,但似乎没有任何好办法(查看Is it possible to flush the console (make it print immediately)?)...有没有可行的解决方案?