2009-10-26 20 views
5

Linux için,/proc/net/dev içeriğini her saniyede bir kontrol eden bir C yardımcı programı yazdım. Bitirdiğimde fopen ("/ proc/net/dev", "r") ve sonra fclose() kullanarak dosyayı açarım./proc psödo dosyası için açma/kapama stratejisi

Gerçek bir dosya yerine 'sahte' bir dosya kullandığım için, her seferinde okuduğumda dosyayı açıp kapatırsam veya uygulamanız başladığında ve açıldığında onu açmalı mıyım? tüm zamanını açmak Yardımcı program bir daemon süreci olarak başlatılır ve bu yüzden uzun bir süre çalışabilir.

cevap

3

Önemli değil, hayır. Ancak, önbelleğe alma/arabelleğe alma ile ilgili sorunlar olabilir, bu, yaptığınız gibi gerçekten en iyi (en güvenli) olduğu anlamına gelir ve dosyayı her seferinde yeniden açar. Bunu çok nadir yaptığınız için, bunu yapmamakla elde edilecek bir performans yok, bu yüzden mevcut çözümünüzü korumanızı tavsiye ederim.

2

İstenmeyen kitap okuma. Sadece read() çağrılarına geçemeyeceğinizi varsayarak, cihazı açın ve ardından akışı arabelleğe alınmamış moda ayarlayın. Bu, bitirdiğinizde akışı kapatmaya gerek olmadığı ek avantajına sahiptir. Sadece geri sar ve tekrar okumaya başla.

FILE *f = fopen("/proc/net/dev", "r"); 
setvbuf(f, NULL, _IONBF, 0); 
while (running) 
{ 
    rewind(f); 
    ...do your reading... 
}