2012-03-08 4 views
-2

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

+0

неправильный в каком смысле? – Aziz

+0

Не понимаю, что вы подразумеваете под: «Возвращенные указатели файлов одинаковы в обоих случаях». И вы должны посмотреть «состояние гонки». Вы можете столкнуться с большими проблемами, когда одно и то же пространство записывается из нескольких потоков/приложений/.. в то же время – chikuba

+0

Что произойдет, если обе программы попытаются записать в один и тот же файл одновременно? –

ответ

0

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

1

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

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

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

Смежные вопросы