[C/POSIX] offset pliku dla read i write

0

Witam.

Krótka piłka:

Czy dla operacje read i write kożystają z tego samego offset'u przypisanego do pojedynczego filehandle?
Czy też każdy ma swój niezależny offset, który inkrementacje ?

Z góry dzięki

0

Kazdy oddzielny proces ma niestety niezalezny taki wskaznik.

0

Dobra zjadlem to teraz troche szerzej napisze :)

Napisze jak to wyglada w skrocie na extX i na wielu innych nie Windowsowych formatach.
Tworzac deskryptor pliku, zostaje do niego przypisany opis, w ktorym masz miedzy innymi wskaznik pliku i adres iwezla, w ktorym sa zapisane rozne inne informacje, typu czas ostatniej modyfikacji, prawa, itp.

Dobra, jesli masz dwa procesy nie zwiazane ze soba to jesli otworza ten sam plik, czytaj utworza do niego po deskryptorze to opisy tego pliku beda juz dwa, a i-wezel jeden w dalszym ciagu.

Natomiast jesli stworzysz proces potomny do tego, ktory ma utworzony deskryptor to on odziedziczy ten deskryptor i bedzie mial kopie, wiec dalej jest to niezalezne, ale jesli w jednym procesie utworzysz dwa deskryptory do tego samego pliku to opis w pamieci bedzie ten sam, wiec juz bedzie zalezne.

0

Chyba się nie zrozumieliśmy. Nie chodzi ni o sytuację gdzie jest wiele procesów.

Jeden proces. Jeden wątek.

Otwieram świeży plik o rozmiarze np. 8 bajtów

write(fh, buf, 4);
read(fh, buf, 1);

read przeczyta teraz 5ty bajt pliku czy pierwszy ?

0

Piaty, poniewaz read i write tak samo jak fwrite i fread przesowaja wskaznik pliku.

0

ok dzięki

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