non blocking getchar.. is possible?

Discussion in 'C' started by sharingos, Apr 19, 2007.

  1. sharingos

    sharingos New Member

    Joined:
    Apr 19, 2007
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    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
    Code:
     c=getchar();	
    if (c==0) c=getch();
    
    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
    Code:
    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;
    
    }
    
    
    and this code:
    Code:
    
    if (kbhit()) 
    	 c = getchar();
    
    
    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!
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice