posix标准指定当写入少于PIPE_BUF字节到管道或FIFO被授予原子时,也就是说,我们的写入不会与其他进程混合.但是我没有找到关于常规文件的标准规范.我的意思是,当我们写的少于PIPE_BUF时,它也会被授予原子性.但我想知道常规文件有这样的限制吗?我的意思是,管道有容量,所以当写入管道并超出其容量时,内核会让编写器进入休眠状态,因此其他进程将有机会写入,但是常规文件似乎没有这样的限制,我是对的?
我正在做的是几个进程生成一个文件的日志.当然,设置O_APPEND.
在参考关于read()和write()的这个问题时,我想知道每个打开的文件描述是否有自己的读写缓冲区,或者当文件被多次打开时,是否有一个读取和写入缓冲区立刻.我很好奇,因为这会对重叠写入同一文件的确切情况产生影响.也许这在Unix之间有所不同?
(据我所知,"文件描述"是指有关打开文件的信息/选项,例如当前标记位置.相反,"文件描述符"仅指过程中用于引用描述的数字. )
假设我有 X 个进程打开文件 Y 进行追加。每个进程当时只写一行(带有\n)(真正的日志条目)。
是否保证每一行都不会在文件 Y 中错误地交错?
更新:本地附加文件系统。