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();

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;

}

and this 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 unhappy

Recommended Answers

All 4 Replies

does anyone has a idea?

Member Avatar for iamthwee

The solution is not to use functions that compromise portability.

The solution is not to use functions that compromise portability.

yes, getchar() is portable however..

no one?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.