non blocking getchar.. my nightmare

Discussion in 'Programming' started by zabux, Apr 19, 2007.

  1. #1
    hi,
    does anyone knows if is there a way to make getchar non blocking?

    I'm using curses and I'm on linux platform. With a thread version of the same program I have solved my problems with getch and with the timeout function but now the program doesn't work properly and I must use
     c=getchar();	
    if (c==0) c=getch();
    
    Code (markup):
    Using timeout(1) makes non blocking only the c=getch part of this code but not the getchar one.

    I have tried to solve this problem using this function
    
    int kbhit(void)
    
    {
    
    struct timeval tv;
    
    fd_set read_fd;
    
    tv.tv_sec=0;
    
    tv.tv_usec=0;
    
    FD_ZERO(&read_fd);
    
    FD_SET(0,&read_fd);
    
    if(select(1, &read_fd, NULL, NULL, &tv) == -1)
    
    return 0;
    
    if(FD_ISSET(0,&read_fd))
    
    return 1;
    
    return 0;
    
    }
    
    
    Code (markup):
    and this code:
    
    
    if (kbhit()) 
    	 c = getchar();
    
    
    Code (markup):
    but the program doesn't work properly...

    Does anyone knows a solution?

    I'm 5 days in a row searching of solve this big problem :(

    hi!
     
    zabux, Apr 19, 2007 IP