2

来源

我以前从未使用过C。此脚本将侦听器添加到目录中,并通过回显到终端来通知用户,然后在文件事件发生时退出。我想将脚本修改为不退出,而是继续监视文件夹。我认为关键可能是这一行:

length = read( fd, buffer, BUF_LEN );

但我真的不明白这里发生了什么。该read()函数的描述可能对那些非常了解 C 的人有帮助:

Using inotify is simple: Create a file descriptor, attach one or more watches (a watch is a path and set of events), and use the read() method to receive event information from the descriptor. Rather than burn scarce cycles, read() blocks until events occur.

但我不属于这一类。

4

1 回答 1

4

exit( 0 );该程序的存在仅仅是因为一旦它捕捉到一个事件,就没有什么能阻止它到达。您可以将所有内容从fd = inotify_init();to包装( void ) close( fd );在一个循环中,只要您愿意,它就会重新开始。

问题不在length = read( fd, buffer, BUF_LEN );. 该部分只是等待事件发生,并不要求程序退出。实际上,它的main设计目的是在一次运行和退出中执行。

于 2011-07-14T18:18:46.703 回答