Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Creare un file in scrittura

0 views
Skip to first unread message

Pleg

unread,
Nov 19, 2009, 10:04:17 PM11/19/09
to
Salve a tutti,

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

Giovanni

unread,
Nov 20, 2009, 3:44:12 AM11/20/09
to

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/ >

Pleg

unread,
Nov 20, 2009, 4:14:23 AM11/20/09
to
> 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


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


Giovanni

unread,
Nov 20, 2009, 4:53:30 AM11/20/09
to

[ .. 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

unread,
Nov 20, 2009, 12:28:53 PM11/20/09
to
Ok, thx!

Pleg

0 new messages