два приложения открывают один файл одновременно - PullRequest
0 голосов
/ 08 марта 2012

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

Ответы [ 2 ]

1 голос
/ 08 марта 2012

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

На ваш вопрос: fopen возвращает указатель на структуру FILE. Эта структура размещается в личном пространстве памяти приложения. В настоящее время каждый процесс имеет свой собственный независимый (виртуальный) адрес памяти пространство (сопоставленное операционной системой с реальными адресами памяти). Поэтому, если в двух независимых программах используется один и тот же адрес памяти, обычно реальная память не совпадает.

В структуре FILE есть (целочисленный) дескриптор файла, который предоставляется операционной системой для идентификации файла, но дескрипторы файла (по крайней мере в Unix-подобных системах) зависят от приложения, поэтому даже если они равны, это ничего не значит.

0 голосов
/ 08 марта 2012

Вам необходимо управлять параллелизмом.Если две разные программы или потоки обращаются к одному ресурсу, им необходимо управлять доступом к ресурсу (в данном случае к файлу) с взаимоисключающим условием.

...