Я читаю о pipe(7)
с в Linux и натолкнулся на следующее:
POSIX.1 говорит, что write(2)
с меньше PIPE_BUF
байты должны быть атомарными: выходные данные записываются в канал как непрерывная последовательность.Запись более чем PIPE_BUF
байтов может быть неатомной: ядро может чередовать данные с данными, записанными другими процессами.POSIX.1 требует, чтобы PIPE_BUF
был не менее 512 байтов.(В Linux PIPE_BUF
составляет 4096 байт.)
Это не совсем понятно.Требует ли POSIX, чтобы все записи, меньшие PIPE_BUF
, были атомарными?Или это верно для труб, созданных только с pipe(int[2], int)
?