How do I create a fileWatcher with an onFileChange event using spawn?

Nemanja Boric via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Aug 27 23:31:56 PDT 2017


On Monday, 28 August 2017 at 06:27:20 UTC, Jacob Carlborg wrote:
> On 2017-08-25 23:25, Enjoys Math wrote:
>> 
>> 
>> Something like this:
>> 
>> 
>> module file_watcher;
>> 
>> import std.concurrency;
>> import std.file;
>> import std.signals;
>> import std.datetime;
>> 
>> 
>> void fileWatcher(Tid tid, string filename, int loopSleep) {
>>      auto modified0 = timeLastModified(filename);
>> 
>>      while (true) {
>>          modified = timeLastModified(filename);
>> 
>>          if (modified > modified0) {
>>              modified0 = modified;
>>              //if (onFileChange !is null)
>>              //    onFileChange(receiver);
>>          }
>> 
>>          sleep(dur!"msecs"(loopSleep));
>>      }
>> }
>> 
>> 
>> But I'm not sure how to send the onFiledChange event.
>
> A delegate perhaps?
>
> Or you can look at any of the existing event driven libraries 
> that do this:
>
> http://code.dlang.org/packages/vibe-core
> http://code.dlang.org/packages/libasync

In addition, to avoid polling, it's possible to register yourself 
to the operating system so it will tell you when a modification 
on the given file has happened: 
https://msdn.microsoft.com/en-us/library/aa364417%28VS.85%29.aspx?f=255&MSPPError=-2147217396 http://man7.org/linux/man-pages/man7/inotify.7.html


More information about the Digitalmars-d-learn mailing list