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

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

int main(int argc, char **argv) {
    FILE *f;
    f = fopen("log.txt", "a");
    fprintf(f, "log entry line");
    fclose(f);
}

Два вопроса:

  1. Если у меня несколько процессов добавление к одному и тому же файлу, будет ли каждая строка журнала отображаться отчетливо или они могут быть переплетены при переключении контекста процессов?
  2. Будет ли эта запись блокироваться, если многим процессам требуется доступ к файлу, что вызывает проблемы параллелизма?

Я с учетом того, что делать это в простейшем воплощении или использовать zeromq для перекачки записей журнала по каналам в сборщик журналов.

Я рассмотрел syslog, но на самом деле мне не нужны какие-либо зависимости платформы от программного обеспечения.

Платформа по умолчанию - это Linux для этого, кстати.

15
задан Deleted 26 September 2011 в 08:31
поделиться