Это зависит от того, что именно вы собираетесь делать и как вы используете файлы. В целом, в системах Unix / Posix, таких как Linux, все файловые вызовы будут успешными, если их создаст несколько процессов, и в общем случае ОС обрабатывает конфликты как «последний, кто что-то выигрывает». По сути, все модификации файловой системы сериализуются, поэтому файловая система всегда находится в согласованном состоянии. Но в остальном это бесплатно для всех.
Здесь много деталей. При открытии файла, например O_EXCL
, используются флаги, которые могут привести к сбою, если другой процесс сделает это первым (своего рода блокировка). Есть рекомендации (иначе операционная система никого не заставляет обращать на них внимание), блокирующие системы, например flock
(попробуйте набрать man 2 flock
, чтобы узнать больше) для содержимого файлов. Есть более специфичная для Linux система обязательной блокировки.
А также есть такие подробности, как «Что произойдет, если кто-то удалил файл, который я открыл?» что другой ответ объясняет правильно и хорошо.
И, наконец, существует целый беспорядок деталей, связанных с тем, гарантировано ли, что какое-то конкретное изменение в файловой системе будет записано на всю вечность, или есть ли вероятность его исчезновения, если кто-то щелкнет выключателем питания. И это полторы беспорядка, когда вы действительно погрузитесь в это, между хитрым аппаратным обеспечением, которое лжет ОС, о вещах к запутанной болтовне различных системных вызовов Linux, охватывающих различные аспекты этой проблемы, часто входя в Linux из разных эпох История Unix / Posix и странное и загадочное взаимодействие друг с другом.
Итак, ответ на ваш очень общий и открытый вопрос обязательно должен быть расплывчатым, абстрактным и волнующим.