1. 根据文件夹的路径,调用open函数打开文件夹,得到文件夹的ID。
2. 通过kqueue()函数创建一个kqueue队列来处理系统事件(文件创建或者删除),得到queueId
3. 创建一个kevent结构体,设置相关属性,连同kqueue的ID一起传给kevent()函数,完成系统对kevent的关联。
4. 调用CFFileDescriptorCreateRunloopSouce
创建一个接收系统事件的runloop source,同时设置
文件描述符的回调函数(回调函数采用C语言标准的回调函数格式),
并加到默认的runloopMode中。
5. 启用回调函数。
6. 关闭kqueue,关闭文件夹
然后就等待系统事件的触发吧。触发后会执行回调函数,在这里面去通知需要通知的对象。注意
每次回调函数执行完后会被设为disabled,需要重新enable