Re: poll() returns even if there is data.

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

 



  On 07/22/2010 09:31 PM, Mansuri, Wasim (NSN - IN/Bangalore) wrote:
> 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

Sounds like you want to implement "tail -f" of sorts. If I'm not 
mistaken, you should use inotify for that, instead.


-- 
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