2016-03-09 21:32 GMT+02:00 Călin Cruceru <[email protected]>: > Salutare, > > 2016-03-09 13:48 GMT+02:00 Roberta Dobrescu <[email protected]>: >> 2016-03-09 12:18 GMT+02:00 Călin Cruceru <[email protected]>: >>> Î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 >> > > Păi da, drepturile pentru file descriptorul curent sunt date de > flaguri, dar mie tot mi se pare ciudat că la primul open() cu O_CREAT > - care îl crează - nu se face verificarea că avem permisiunile pe care > le cerem în apel ca flaguri (exemplul meu de mai devreme[1]), ceea ce > se întâmplă în mod normal (apelul 2 open() din exemplu). > > Am găsit un commit în kernel care a făcut să meargă în felul ăsta și > pentru O_TMPFILE[2][3] (aparent erau probleme de consistență cu > O_CREAT). Nu pot spune că am înțeles motivul pentru care e așa și nu > altfel (de exemplu să dea eroare), dar fiind o documentație veche de > zeci de ani, bănuiesc că unele lucruri trebuiesc luate for granted. >
Fixed the links. [1]: https://paste.kde.org/pelfmniqm [2]: https://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.14.24 [3]: http://kernel.suse.com/cgit/kernel/commit/?h=v3.14.26&id=74df6af526d186c54333107219a5ff79b5e8c1d6 Călin _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
