Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

A.2. 唤​​​​​​​醒​​​​​​​

很​​​​​​​多​​​​​​​应​​​​​​​用​​​​​​​程​​​​​​​序​​​​​​​都​​​​​​​会​​​​​​​扫​​​​​​​描​​​​​​​配​​​​​​​置​​​​​​​文​​​​​​​件​​​​​​​中​​​​​​​的​​​​​​​更​​​​​​​改​​​​​​​。​​​​​​​在​​​​​​​很​​​​​​​多​​​​​​​情​​​​​​​况​​​​​​​下​​​​​​​,这​​​​​​​种​​​​​​​扫​​​​​​​描​​​​​​​的​​​​​​​时​​​​​​​间​​​​​​​间​​​​​​​隔​​​​​​​是​​​​​​​固​​​​​​​定​​​​​​​的​​​​​​​,例​​​​​​​如​​​​​​​:每​​​​​​​分​​​​​​​钟​​​​​​​。​​​​​​​这​​​​​​​可​​​​​​​能​​​​​​​是​​​​​​​个​​​​​​​问​​​​​​​题​​​​​​​,因​​​​​​​为​​​​​​​它​​​​​​​强​​​​​​​制​​​​​​​将​​​​​​​磁​​​​​​​盘​​​​​​​从​​​​​​​低​​​​​​​转​​​​​​​速​​​​​​​状​​​​​​​态​​​​​​​唤​​​​​​​醒​​​​​​​。​​​​​​​最​​​​​​​佳​​​​​​​解​​​​​​​决​​​​​​​方​​​​​​​案​​​​​​​是​​​​​​​找​​​​​​​到​​​​​​​合​​​​​​​理​​​​​​​的​​​​​​​时​​​​​​​间​​​​​​​间​​​​​​​隔​​​​​​​,好​​​​​​​的​​​​​​​检​​​​​​​查​​​​​​​机​​​​​​​制​​​​​​​或​​​​​​​者​​​​​​​使​​​​​​​用​​​​​​​ inotify 检​​​​​​​查​​​​​​​并​​​​​​​响​​​​​​​应​​​​​​​每​​​​​​​个​​​​​​​事​​​​​​​件​​​​​​​。​​​​​​​Inotify 可​​​​​​​查​​​​​​​看​​​​​​​文​​​​​​​件​​​​​​​或​​​​​​​者​​​​​​​目​​​​​​​录​​​​​​​中​​​​​​​的​​​​​​​各​​​​​​​种​​​​​​​更​​​​​​​改​​​​​​​。​​​​​​​
例​​​​​​​如​​​​​​​:
int fd;
fd = inotify_init();
int wd;
/* checking modification of a file - writing into */
wd = inotify_add_watch(fd, "./myConfig", IN_MODIFY);
if (wd < 0) {
  inotify_cant_be_used();
  switching_back_to_previous_checking();
}
...
fd_set rdfs;
struct timeval tv;
int retval;
FD_ZERO(&rdfs);
FD_SET(0, &rdfs);

tv.tv_sec = 5;
value = select(1, &rdfs, NULL, NULL, &tv);
if (value == -1)
  perror(select);
else {
  do_some_stuff();
}
...
这​​​​​​​个​​​​​​​方​​​​​​​法​​​​​​​的​​​​​​​优​​​​​​​点​​​​​​​是​​​​​​​您​​​​​​​可​​​​​​​执​​​​​​​行​​​​​​​不​​​​​​​同​​​​​​​的​​​​​​​检​​​​​​​查​​​​​​​。​​​​​​​
主​​​​​​​要​​​​​​​的​​​​​​​局​​​​​​​限​​​​​​​是​​​​​​​一​​​​​​​个​​​​​​​系​​​​​​​统​​​​​​​中​​​​​​​的​​​​​​​查​​​​​​​看​​​​​​​次​​​​​​​数​​​​​​​是​​​​​​​有​​​​​​​限​​​​​​​的​​​​​​​。​​​​​​​次​​​​​​​数​​​​​​​可​​​​​​​在​​​​​​​ /proc/sys/fs/inotify/max_user_watches 中​​​​​​​获​​​​​​​得​​​​​​​,虽​​​​​​​然​​​​​​​该​​​​​​​数​​​​​​​字​​​​​​​是​​​​​​​可​​​​​​​以​​​​​​​更​​​​​​​改​​​​​​​的​​​​​​​,但​​​​​​​并​​​​​​​不​​​​​​​建​​​​​​​议​​​​​​​如​​​​​​​此​​​​​​​操​​​​​​​作​​​​​​​。​​​​​​​再​​​​​​​有​​​​​​​,inotify 失​​​​​​​败​​​​​​​时​​​​​​​,该​​​​​​​代​​​​​​​码​​​​​​​必​​​​​​​须​​​​​​​返​​​​​​​回​​​​​​​不​​​​​​​同​​​​​​​的​​​​​​​检​​​​​​​查​​​​​​​方​​​​​​​法​​​​​​​,通​​​​​​​常​​​​​​​意​​​​​​​味​​​​​​​着​​​​​​​在​​​​​​​源​​​​​​​代​​​​​​​码​​​​​​​中​​​​​​​会​​​​​​​有​​​​​​​很​​​​​​​多​​​​​​​ #if #define。​​​​​​​
有​​​​​​​关​​​​​​​ inotify 的​​​​​​​详​​​​​​​情​​​​​​​请​​​​​​​参​​​​​​​考​​​​​​​ inotify man page。​​​​​​​