[so] [Lab2] Comportament open() cu O_CREAT și fără drept RD/WR

Roberta Dobrescu roberta.dobrescu at gmail.com
Wed Mar 9 13:48:42 EET 2016


2016-03-09 12:18 GMT+02:00 Călin Cruceru <so at cursuri.cs.pub.ro>:
> 2016-03-09 12:15 GMT+02:00 Călin Cruceru <crucerucalincristian at gmail.com>:
>> Salut,
>>
>> Pornind de la unul dintre exercițiile din laboratorul 2[1] (Linux -
>> Troubleshooting) am observat un comportament al lui open()[1] pe care
>> nu îl înțeleg pe deplin.
>>
>> Am experimentat cu codul de la [3].  Să presupunem că fișierul "test"
>> nu există atunci când se rulează programul.  Comportamentul care mi se
>> pare ciudat este legat de faptul că primul apel write() se termină cu
>> succes - în mod surprinzător pentru mine, iar al doilea failează - așa
>> cum mă aștept.
>>
>
> Aici am vrut să zic că al doilea apel open() failează; nu se ajunge la
> al doilea write().
>
>> În timp ce scriam acest e-mail am citit în manualul open()[2], la
>> flag-ul O_CREAT, următorul lucru:
>>
>> O_CREAT - [...]; the open() call that creates a read-only file may
>> well return a read/write file descriptor.

Înainte de fraza asta, în manual mai scrie: "*Note that this mode applies
only to future accesses of the newly created file*; the open() call
that creates a read-only file may well return a read/write file
descriptor.". Cum văd eu asa: am făcut open care creează un fișier cu niște
permisiuni (date de mode), dar acum permisiunile pe file descriptorul
returnat de open am permisiunile date de flaguri. Mi se pare destul de clar
comportamentul.

Roberta
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20160309/737f7751/attachment.html>


More information about the so mailing list