私はファイルを見たいと思っています。 今まで私はループする必要があります!eof、私はそれがCPU時間の無駄だと思います。Linux C!eofイベントの取得方法は?
static int rs_eof_read_binlog(rs_master_info_t *m, void *buf,
size_t size) {
FILE *fp;
size_t n;
fp = m->bfp;
for(;;) {
n = fread(buf, size, 1, fp);
if(n * size < size) {
if(ferror(fp) != 0) {
return RS_ERR;
}
if(feof(fp) != 0) {
fseek(fp, -n * size, SEEK_CUR);
sleep(1);
}
}
else {
break;
}
}
clearerr(fp);
return RS_OK;
}
iが選択、ときにファイルのEOF、選択戻りcheckd。
Those listed in readfds will be watched to see if characters become avail‐
able for reading (more precisely, to see if a read will not block; in particular, a file descriptor is also ready on end-of-file)
固定!!!!
int main(int argc, char *argv[])
{
char p, buf[1024];
int fd = open("/home/terry/1.txt", O_RDONLY, "00666");
struct inotify_event * event;
size_t len;
read(fd, &p, 1);
int ifd = inotify_init();
int wd = inotify_add_watch(ifd, "/home/terry/1.txt", IN_MODIFY);
while(len = read(ifd, buf, 1024)) {
event = (struct inotify_event *) buf;
if(event->mask & IN_MODIFY) {
printf("changed\n");
break;
}
}
return 0;
}
このコードのどこかで 'select'を使用していないことを考慮し、どこにも渡していないfd_setを持っていても、' man select'で読んだものは何に当てはまると思いますか? – cHao
@cHao、彼はなぜ彼が 'select'を使うことができないのかを説明しようとしていると思います - 彼はデータがあるときを知りたいですが、' select'はEOFで目を覚ますでしょう。 – ugoren
@ugoren:さて、彼はそれについて少し明確にする必要があります。とにかくファイルで何をしたいのかを '選択する 'とは思えません。それはパイプやソケットのためのものです。 – cHao