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