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@lists.fedoraproject.org
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines

Reply via email to