PDA

Visualizza la versione completa : [C] Verifica dell'esistenza di un file (Linux)


AyeyeBrazorv
18-01-2012, 17:48
Ragazzi ho fatto questa prova per verificare con una riga di codice se un file esisteva:

int x= system("ls /home/.../file");

e ho stampato x.

Se un file esiste mi da x=0. Se non esiste mi da errore dicendo che la directory non esiste. Ora, io questa cosa l'ho provata ben sapendo che probabilmente sarebbe stata errata. C'è un modo migliore e altrettanto immediato per verificare l'esistenza di un file da sistema in modo tale da non dare errore rosso??

valia
18-01-2012, 18:00
che linguaggio sei?
Banalmente penso che è più semplice tentare l'apertura del file in lettura, se non riesce vuole dire che c'è un problema (cioè se torna NULL)

oregon
18-01-2012, 18:02
Usa la funzione

stat
http://linux.die.net/man/2/stat

AyeyeBrazorv
18-01-2012, 18:11
Originariamente inviato da valia
che linguaggio sei?
Banalmente penso che è più semplice tentare l'apertura del file in lettura, se non riesce vuole dire che c'è un problema (cioè se torna NULL)

Sto in C... Siccome da terminale ho notato che se cerco un file che esiste mi stampa la directory mentre se il file non esiste mi dice che è errore, volevo capire come poterlo fare da programma.

dato un path, come devo usare lstats()? Non ho ben capito che ci devo mettere all'interno

oregon
18-01-2012, 18:13
Non ti ho suggerito lstats ma stat

int stat(const char *path, struct stat *buf);

e c'è l'esempio in fondo ...

valia
18-01-2012, 18:22
Originariamente inviato da oregon
Non ti ho suggerito lstats ma stat

int stat(const char *path, struct stat *buf);

e c'è l'esempio in fondo ...

dimentico sempre stat, alla fine non mi chiedo solo se il file esiste, spesso mi interessa anche aprirlo (e con fopen non faccio 2 chiamate)

Good, me ne ricorderò thanks :ciauz: :ciauz:

AyeyeBrazorv
18-01-2012, 18:49
Originariamente inviato da oregon
Non ti ho suggerito lstats ma stat

int stat(const char *path, struct stat *buf);

e c'è l'esempio in fondo ...

struct stat sb;

sb che valore ha quindi?

oregon
18-01-2012, 18:57
sb è una struttura ... non ha un valore unico ...

La cosa importante - come vedi nell'esempio - è il valore restituito dalla funzione.

AyeyeBrazorv
18-01-2012, 18:59
Ho risolto. Grazie

alka
19-01-2012, 11:19
Originariamente inviato da AyeyeBrazorv
File inesistente

Il titolo è del tutto inadeguato: in futuro ricordati di indicare il linguaggio e una descrizione significativa del problema, come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887).

Qui ho corretto io.

Loading