Paoletta ha scritto:ok grazie!
Se questo "ok grazie!" si riferisce a ciò che ti avevo appena scritto:
Succede che ti tronca a zero il file
farò di più, ti spiegherò perchè lo fa!
Il problema è la shell. In generale:
comando file > file
indica alla shell che l'output del comando deve andare direttamente in file. Ora, la ridirezione come sappiamo è fatta appunto dalla shell, ma come?
Semplice, la shell apre il file e, in questo caso lo tronca a 0 (la ridirezione non è un append >>). Dopo aver aperto il file duplica il suo file descriptor con quello dello standard output. A questo punto, chiude il file descriptor originale del file e manda in esecuzione (tramite la exec) il comando. Dato che i file descriptor sono passati tali e quali ai figli, il comando si trova con il file descriptor 1 (standard output) aperto a quello del file.
Ora, dovè il problema? Bhé, quando la shell ha aperto il file lo ha troncato a 0, quindi il comando non ha più niente da leggere!!!
Spina