czytanie jednego pliku przez wiele procesow

0

Witam.

Co się dzieje, jeżeli dwa procesy jednocześnie czytają plik?

Tzn, trzeba używać locków na to?

Powiedzmy dwa procesy używają funkcji fopen(path,"a")

wydaje mi się, że gdy jeden proces będzie miał otwarty plik, to gdy drugi będzie próbował go otworzyć to po prostu funkcja fopen zwroci pusty uchwyt

czy to prawda? czy jak to z tym jest?

0

Jest tak, ze wszystko zalezy od tego jak pierwszy proces otworzyl ten plik za pomoca funkcji fopen, czy open, mozesz otworzyc plik ustawiajac flage blokujaca plik dla innych procesow, czyli tylko ten proces, ktory aktualnie otwiera plik bedzie mogl go edytowac, jesli nie pierwszy proces otworzy go bez tej flagi to drugi rowniez bedzie mogl z niego w pelni korzystac.
W skrocie jeszcze powiem, ze na unixach otwierajac plik jest tworzona nowa pozycja(identyfikator, deskryptor) w globalnej tablicy deskryptorow wskazujaca na ten plik. Kazdy plik rowniez ma swoja pozycje w globalnej tablicy plikow, w ktorej jest zapisana informacja o biezacej pozycji wskaznika pliku, informacje o sygnalach.
Jesli otworzysz przez jeden proces plik, a nastepnie przez drugi to deskryptor zostaje powielony, czyli ma przypisany inny identyfikator, ale wskazuje na ten sam plik. Poczytaj o globalnej tablicy deskryptorow, tablicy plikow oraz i-wezlach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1