On 9/21/19 11:23 AM, Aust zhu wrote: > Hello! > I am having some problems with readline(). When calling the readline() > function it is blocked. I want to set a timeout for the readline function > to return.
You don't post any code, but I assume you're using a signal handler for SIGALRM. > I tried setting rl_done=1, and fprintf(rl_instream,"\r\n"); > fflush(rl_instream); can't make the readline() function return. What should > I do to make the readline() function return? SIGALRM is one of the signals readline handles, so it will resume whatever it was doing (presumably reading a character) if the calling application's signal handler returns. You can use rl_signal_event_hook or some other mechnanism to longjmp back to readline's caller, once your signal handler notes that your application received the SIGALRM. That's how bash implements read builtin timeouts in the presence of `read -e'. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/