Hi!

Za IPC sem izbral FIFO named pipe.
In sicer "mkfifo /tmp/test --mode=0777"
v enem oknu pozenem "cat bljuz > /etc/test"
v drugem pa dodani programcek:

-----------------------------------------
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <fcntl.h>
#include <unistd.h>

int main(){
  int fd,i;
  char ch[1];
  fd_set sel_set;

  umask(0);
  fd=open("/tmp/test",O_RDONLY | O_NONBLOCK);
  if (-1==fd) {
    printf("\niiiiiiiiiikkkkkkkkk\n");
    return(2);
  }

  FD_ZERO(&sel_set);
  FD_SET(fd,&sel_set);

  printf("\nBu1!\n");
  
  while (-1!=select(fd+1,&sel_set,NULL,NULL,NULL)) {
    if (FD_ISSET(fd,&sel_set)) {
      printf("fd is set!\n");
      i=read(fd,ch,1);
      printf("%c",ch[0],i);
    } else {
      printf("\nI was woken up but there is no data!\n");
      return(1);
    }
    FD_ZERO(&sel_set);
    FD_SET(fd,&sel_set);
  }

  printf("\nselect()\n");
  return(0);
}
-----------------------------------------

zadeva se zacilkla :(.
select() sprva caka brez problema nato pa se aktivira vsakic, ceprav ni vec
podatkov (read vrne 0 in kot podatek EOF). Wtf?


-- 
best regards,
Rok Papez.

Reply via email to