inotifyをモニタファイル

 

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)。
    
    戻る権利を。
}

 

 

おすすめ

転載: www.cnblogs.com/porkerface/p/12031597.html