poll() returns even if there is data.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am trying to read some file using open and read system calls. 

Here in my code I am doing open than poll and if poll returns with the event POLLIN than read. 
Even if poll returns with the event POLLIN read returns 0, that means no data. 

My question here is, 
	Am I using poll() properly?
	can we use poll to read the files like I am reading?
	If we can not use poll than is there any other way using which I can get to know if there is some data in the file after I did last read()?

I am pasting code snip below. 
	
 if((fd = open(fileName,O_RDONLY))==-1){
            printf("File opened Failed errno=%d\n",errno);
            return (0);
    }   

    loc = lseek(fd,0,SEEK_END);

    fds[0].fd = fd; 
    fds[0].events = POLLIN;
    fds[0].revents = 0;

    while(1){
        ret = poll(fds,1,timeout);
        printf("poll returned with ret = %d, events = %d, revents=%d, errno =%d \n",ret,fds[0].events,fds[0].revents,errno);
        if(fds[0].revents){
            if((bytRcvd = read(fd,buff,1024))>0){
                printf("%s",buff);
            }
            else{
                printf("Read Failed on %s with retValue = %d Errno = %d \n",fileName, bytRcvd, errno);
                sleep(2);
            }
        }
    }   

Above code always throws following output.

poll returned with ret = 1, events = 1, revents=1, errno =0 
Read Failed on /var/log/messages with retValue = 0 Errno = 0 
-- 
users mailing list
users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux