从多个进程附加到单个文件的“线程安全”?

jld*_*ont 5 linux concurrency file

假设我有 X 个进程打开文件 Y 进行追加。每个进程当时只写一行(带有\n)(真正的日志条目)。

是否保证每一行都不会在文件 Y 中错误地交错?

更新:本地附加文件系统。

Set*_*son 0

问题取决于正在进行什么类型的写入。如果您使用带缓冲的标准 I/O(这通常是大多数程序的默认设置),则缓冲区只会在写入几行后才会刷新,并且刷新时不一定是整数行。如果您使用 write(2) 或已将默认 stdio 缓冲更改为行缓冲或无缓冲,那么只要行大小合理(当然,如果行小于 512 字节),它就可能正确交错。