Как я могу синхронизировать - сделать атомарную - запись в один файл из двух процессов?

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

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

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

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

6
задан octopusgrabbus 6 July 2012 в 19:23
поделиться