John ha menzionato i due percorsi principali che è possibile eseguire per la visione di file con sistemi Unix/Linux: notifica e polling.
La notifica è quando il sistema stesso (di solito il kernel) attiva un messaggio per le applicazioni registrate ogni volta che si accede o si scrive a un file. Questo approccio richiede un sistema conforme e potrebbe non essere disponibile su macchine precedenti.
L'implementazione principale della notifica sotto Linux è inotify, che è incorporata nei kernel 2.6.13 e successivi e può essere modificata in 2.6.12 e versioni precedenti. C'è un nice IBM guide sull'utilizzo di inotify e uno set of tools and C library di base per accedere a inotify.
Polling è quando il programma controlla ripetutamente un file a intervalli per vedere se qualcosa di quel file - le sue dimensioni, l'ultima modifica, il proprietario, ecc. - è stato modificato.
Non c'è implementazione standard di questo, come è scritto su un livello di programma piuttosto che base a livello di sistema, anche se la chiamata di sistema poll esiste e sembra di fare qualcosa di utile per questo scopo (la pagina man dice che è simile a select e attende che un evento diventi disponibile su un descrittore di file). Puoi anche prendere l'approccio più semplice con stat e fare il tuo controllo da solo.
grazie per la spiegazione –
dubito che poll() sarà di aiuto. Sembra che tu abbia frainteso ciò che sond() fa. A meno che non intendi usarlo * con * inotify. – Thomas
Per chiarire: sondaggio() può solo dirti cose come "se leggo() da questo file ora, sarà questo blocco?" oppure "Attendi max 3 secondi o finché non riesco a leggere (senza il blocco di read() da almeno uno di questi descrittori di file". – Thomas