作者charleshu (Analog Engineer)
看板C_and_CPP
標題Re: [問題] 如何知道外部的檔案被改變了
時間Mon Apr 26 19:09:12 2010
※ 引述《cooper6334 (小恐龍)》之銘言:
: 遇到的問題: (題意請描述清楚)
: 我要在linux下寫一個程式,能夠動態讀取設定檔
: 就是當另外一個檔案的內容被改變時,就會執行程式中的某個函式
: 我聽說是要利用signal來做,但是我試出來的結果
: 好像signal的一些訊號好像都只針對程式本身發出
: 當我kill程式本體的時候可以抓到SIGTERM,但是kill vi就抓不到
: 請問我要用那一種訊號或是用什麼方法來處理呢?
在 linux 下可以用 inotify
假如想跨平台,且設定檔不大的話,可以每幾秒把內容讀進來一次,再算一下MD5
看有沒有被改過.
可以把這件事放在另一個 thread 或 process 來做,並將priority設低,
就不會影響效能.
每種方法都有優缺點,要看需求而定.
--
Do not depend on others without effort...
當我年輕時,請教別人問題時常聽到上面那句話. 當時心裏偶而會有些小小抱怨.
當時間過去,我偶而會想到上面那句話, 心中十分感謝當初告訴我那句話的人.
當發現問題時,最有價值的不是問題的答案,
而是找到解決的方向,並在努力的過程裡具備解決問題的能力.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.232.239
→ tinlans:其實很多檔案系統都有 modify time 欄位可以讀取, 04/26 20:50
→ tinlans:它用 stat 這個 syscall 可以取到,而且未必真的有 I/O 發 04/26 20:51
→ tinlans:生,因為這些東西常常 cache 在 memory 裡。 04/26 20:51