Per i compiti devo scrivere un programma in C e una delle cose che deve fare è controllare se esiste un file e se è eseguibile dal proprietario.Uso di stat per verificare se un file è eseguibile in C
Utilizzo di (stat(path[j], &sb) >= 0
Sono in grado di vedere se il file indicato dal percorso [j] esiste.
Ho esaminato le pagine man, molte domande e risposte su StackOverflow e diversi siti Web, ma non sono in grado di comprendere esattamente come verificare se un file è eseguibile tramite stat. Ho pensato che sarebbe stato semplice come ((stat(path[j], &sb) >= 0) && (sb.st_mode > 0) && (S_IEXEC)
ma, per quanto posso dire testandolo, sembra ignorare il fatto che questi file non sono eseguibili.
Penso che forse stat non funziona come credo. Supponendo che io uso stat, come posso risolvere il problema?
'&& (S_IEXEC)' non dipende affatto da 'sb', cosa dovrebbe fare nel test? – Mat
Ricerca dell'operatore AND bit a bit. Devi usarlo e S_IXUSR contro sb.st_mode – goji
Divertente che se questa fosse una domanda Python, tutti avrebbero istantaneamente [gridato su quanto sia terribilmente pericoloso] (http://stackoverflow.com/questions/82831/how-do -i-check-if-a-file-exists-using-python) a causa di una possibile condizione di gara se prevedi di fare affidamento su quel risultato in seguito. Se lo fai (e ti piace tenerlo al sicuro), potresti voler ottenere un blocco sul file prima di chiamare 'stat'. – Kos