- E 'sicuro usare
lseek(fd,0)
e poiread(fd,buf)
per/proc/stat
file invece di riaprire per ottenere contenuti aggiornati di questo file la prossima volta? - E cosa fa realmente la chiamata
mmap()
dopo l'apertura di questo file (vedi sotto)?
Il problema che sto riscontrando è che le prime segnalazioni indicano un utilizzo della CPU troppo basso (10% vs 100% per gli interrupt software). Lo strace indica che top non riapre questo file, ma invece inizia a leggere e lo legge ancora una volta. E in qualche modo il contenuto che viene letto da questo file la volta successiva non corrisponde a quello che otterrei quando eseguo il gatto per il file /proc/stat
da solo.è sicuro da usare lseek() durante la lettura da Proc-FS file seconda volta
Anche se corro in cima e cat /proc/stat
in un ciclo allo stesso tempo, in alto inizia a segnalare l'utilizzo della CPU corretto.
Un'altra differenza che ho notato è che il primo utilizza la chiamata mmap()
subito dopo l'apertura del file /proc/stat
, mentre lo cat
non lo fa. Non sono sicuro se questo potrebbe anche essere messa in relazione con il mio problema (perché filesdes=-1
qui):
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7b37649000
Sto usando edizione Ubuntu 10.04.1 Desktop immagine 2.6.32-27-server con. La CPU è Intel Q6600.
Questo è vero per lseek. Sembra che htop sia implementato per riaprire/proc/stat file ogni volta prima di leggerlo, ma nel frattempo htop segnala anche l'utilizzo della cpu non valido. Quindi possiamo probabilmente escludere lseek(). –