1、定期探测法
while(1)
{
checkfile();
sleep(5);
}
2、信号法
向目标程序发送指定的信号SIGXXX
kill -s SIGXXX $(pidof TARGET)
在程序中设置signal函数,接收到SIGXXX信号,然后调用相应的函数进行处理。
signal(SIGXXX, checkfile);
3、inotify法
不具备可移植性,在Linux 2.6(2.6.13以上)上可以使用,但是在Linux 2.4以及一些Unix操作系统上是无法使用的。
BTW:以前总是以为一些IDE在发现一个文件发生改变的时候,能够提示reload那个文件是很神的。最近在用codelite发现它也有这个功能,正好是开源的IDE,就找出源代码来看一下是怎么实现的。
简直想吐血:
Editor在窗口Actived的时候会调用Actived()函数,函数里面:
获得当前文件的最后修改时间,然后与之前保存的一个时间进行比较,如果不同,说明文件发生了变化,提示重新加载文件。
这种靠GUI窗口激活的方法看来不怎么可行:-(
阅读(1639) | 评论(0) | 转发(0) |