node.js SIGINT处理程序不打印我的消息

时间:2018-04-19 05:24:56

标签: node.js console.log

我正在实现一个程序,它可以通过将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)?)...有没有可行的解决方案?

0 个答案:

没有答案