- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我在 process.stdout.write
/process.stderr.write
const strm = fs.createWriteStream(logfile);
const stdoutWrite = process.stdout.write;
process.stdout.write = function () {
strm.write.apply(strm,arguments);
stdoutWrite.apply(process.stdout, arguments);
};
(对于 process.stderr,它是相同的,并且正在写入相同的流)。
问题:
当我使用 node x.js
运行此过程时
流在关闭之前没有完成所有写入,甚至没有关闭。但是如果我跑
$ node y.js # this runs x.js in child process
现在,子进程中运行的流将完成写入,并且日志文件现已满。
为什么会这样?如果不使用 fs.appendFileSync
,有没有办法确保流在进程关闭之前耗尽?
编辑:
我想我知道为什么会发生 - 我正在调用 process.exit()
,这将提前关闭进程,并且可能会在流完成之前被调用。
有没有办法监听流何时完成写入?如果当我调用 process.exit() 时在流上调用 finish() ,这似乎是人为的“完成”。我尝试等待“drain”事件,但它似乎永远不会触发。
最佳答案
stream.end('end!', ()=> process.exit(0))
drain
仅当您可以恢复写入先前失败/阻止的流时,事件才会触发。
我不完全确定失败时 end
/write
回调的语义。您可能需要添加超时,当然,如果写入阻塞,回调将不会运行,直到数据刷新。
stream.end('end!', ()=> process.exit(0))
setTimeout(()=> {
console.log('end timed out')
process.exit(1)
}, 2000)
关于node.js - process.stdout.write/process.stderr.write 猴子补丁适用于子进程,但不适用于父进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43506958/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我尝试过sp_helpindex,但它显示的是具有索引的列,而不是包含的列。请告诉我如何列出包含列(非键)的所有索引? 最佳答案 针对目录 View 尝试此 T-SQL 查询: SELECT
我是一名优秀的程序员,十分优秀!