in un esercizio mi si chiede di creare un file (sovrascrivendo il
precedente, se esiste) in cui devo scrivere dei dati, settando i permessi
di lettura/scrittura per l'utente. Viene dato questo esempio:
creat(filename, S_IREAD | S_IWRITE);
ma leggendo un po' in giro mi sembra di capire che sia obsoleto. Questo e'
piu' corretto?
open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
Thx,
Pleg
Sono esattamente equivalenti.
$ man creat
Una chiamata a creat() e` equivalente ad una chiamata ad open() con le
flags settate a O_CREAT | O_TRUC | O_WRONLY
Ciao
Giovanni
--
A computer is like an air conditioner,
it stops working when you open Windows.
< http://giovanni.homelinux.net/ >
Yep, ma qui
http://www.opengroup.org/onlinepubs/000095399/functions/creat.html
dice "The creat() function is redundant. ... It has been included primarily
for historical purposes since many existing applications depend on it."
Quindi mi sembrava "obsoleta", e mi chiedevo se convenisse usare open() nei
nuovi programmi.
Pleg
[ .. reduntant ... ] non è equivalente a obsoleta. Qualsiasi cosa sia
scritto a quel link la creat() è definita dagli standard POSIX ed
implementate dalle librerie.
Che poi in futuro possa venire rimossa lo credo improbabile perché
renderebbe inutilizzabile i programmi gia compilati. Ed
implementarla, secondo la sua definizione, mediante una chiamata alla
open() aggiungendo le flags necessarie penso che costi veramente poco.
Pleg