inotifyをし、ファイル通知を監視します
静的 int型 inotify_dbfile(のconst のchar * spFromRule、constの char型 * spDevFile) { int型inotifyFd; int型watchfd1; int型watchfd2; チャーBUF [buf_lenだけ]。 size_tのnumRead; char * SPFILE; 構造体 inotify_event * イベント。 int型 RET = 0 ; / * 初期化はinotifyインスタンス* / IF( - 1 ==(inotifyFd = inotify_init())) { LOG_ERROR(" エラー:バージョンinotifyの初期化が失敗します。.. " ); 出口(1 )。 } / * すべての入力ディレクトリを介してループをモニタに提供される* / IF( - 1 ==(watchfd1 = はinotify_add_watch(inotifyFd、spFromRule、のevent_mask))) { LOG_ERROR(" エラー:inotifyの監視対象[%s]は失敗します。.. " 、spFromRule)。 出口(2 )。 } もし( - 1 ==(watchfd2 = はinotify_add_watch(inotifyFd、spDevFile、のevent_mask))) { LOG_ERROR(" エラー:inotifyの監視対象[%s]は失敗します。.. " 、spDevFile)。 出口(2 )。 } 一方、(1 ) { / * 永遠読むイベント* / 場合(1 >(numRead = 読み込み(inotifyFd、BUF、はbuf_len))) { LOG_ERROR(" inotifyをFDからの読み取り()0を返しました!" ); プット(" inotifyをFDからの読み込みは、()0を返しました!" ); 出口(4 )。 } / * 処理は(読み)は、バッファ内のすべてのイベントを返します* / について(BUF = SPFILE; SPFILE <BUF + numRead;) { イベント =(構造体 inotify_event * )SPFILE; もし((イベント - >マスク&IN_MODIFY)) { LOG_INFO(" INFO:inotifyの監視対象ファイルが変更されて... " ); 右 = 1 ; 後藤より; } SPFILE + = はsizeof(構造体 inotify_event)+ イベント - > lenを、 } } 終わり: inotify_rm_watch(inotifyFd、watchfd1)。 inotify_rm_watch(inotifyFd、watchfd2)。 クローズ(inotifyFd)。 戻る権利を。 }