2017-03-21 24 views
0

synrc/fs libraryによって検出されたフォルダの変更に基づいて処理を実行しようとしています。 fsによって捕捉された変更がアクションを実行するたびにこの通知を受け取りたいです。変更されたファイル名を印刷します。処理中にErlang

私は以下のコードを試しましたが、初回のみ実行します!

say_hello() -> 
    fs:start_link(fs_watcher, "/Users/foldername"), 
    fs:subscribe(fs_watcher), 
    receive 
     {Watcher_process, {Fs, File_event}, {ChangedFile, Type}} -> 
      io:format("~p was ~p ~n",[ChangedFile,File_event]) 
    end. 

可能な場合は、任意の便利なヘルプはリンク&説明と一緒に歓迎です!感謝:)あなたは関数がメッセージの同じ種類を受けておきたい場合は

+0

あなたの両方@Dogbertは私にちょっと似た答えを与えました!たくさんありがとう!私はあなたの答えの両方をupvoted!しかし、答えを選んだ人は混乱しています(あなたはどちらも正確な時間に答えます)。 –

+0

@AsierAzkuenagaあなたはどちらも私にちょっと同様の答えをくれました!たくさんありがとう!私はあなたの答えの両方をupvoted!しかし、答えを選んだ人は混乱しています(あなたはどちらも正確な時間に答えます)。 –

答えて

2

あなたが使用できる再帰:

say_hello() -> 
    fs:start_link(fs_watcher, "/Users/foldername"), 
    fs:subscribe(fs_watcher), 
    recur(). 

recur()-> 
    receive 
    {Watcher_process, {Fs, File_event}, {ChangedFile, Type}} -> 
     io:format("~p was ~p ~n",[ChangedFile,File_event]), 
     recur() 
    end. 

あなたは、関数を確定するための方法を考えなければならないだろう。あなたは再帰的receiveを呼び出す必要が

+0

ありがとう、@Asier !! :) –

2

say_hello() -> 
    fs:start_link(fs_watcher, "/Users/foldername"), 
    fs:subscribe(fs_watcher), 
    loop(). 

loop() -> 
    receive 
     {Watcher_process, {Fs, File_event}, {ChangedFile, Type}} -> 
      io:format("~p was ~p ~n",[ChangedFile,File_event]), 
      loop() 
    end. 
+0

ありがとう、@Dogbert! :) –