리눅스에서 eof가 아닌 파일 fd가 읽기 쉽도록하고 싶습니다. c. 지금까지 반복해야합니다! eof, 나는 그것이 CPU 시간 낭비라고 생각합니다.리눅스 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;
은}
가 나는 경우 파일의 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, 그가 왜 '선택'을 사용할 수 없는지 설명하려고합니다. 그는 데이터가 언제 있는지 알고 싶어하지만 '선택'을 선택하면 EOF에서 깨울 것입니다. – ugoren
@ugoren : 그럼, 그는 그것에 대해 좀 더 명확해야합니다. 나는'선택'이 파일에서 원하는 것을 할 것이라고 확신하지 못한다. 이것은 파이프와 소켓에 더 많은 것을 의미한다. – cHao