+1 Блокировка файлов - это, вероятно, лучший способ, так как зачастую неэффективно (или сложно) записать все за один раз.

я есть два процесса, каждый из которых записывает большой буфер данных, и я хочу контролировать синхронизацию записи этих процессов в один файл.

буфер записи процесса 1, включающий (A1, A2, A3), и буфер записи процесса 2, включающий (B1, B2, B3). когда мы используемwrite() системный вызов для записи этих буферов на диск в один и тот же файл (весь буфер за один раз:write(fd, A, sizeof(A))) Как схема файла?

Это так: A, B или B, A возможно?или это может быть так: A1, A2, B1, A3, ...

Я спрашиваю об этом, потому что системные вызовы являются атомарными. что произойдет, если буфер данных, который мы пишем, слишком велик. Это как каналы для обычных файлов на диске?