bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Some questions about the use of readline()


From: Chet Ramey
Subject: Re: Some questions about the use of readline()
Date: Sun, 22 Sep 2019 14:45:10 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.9.0

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    chet@case.edu    http://tiswww.cwru.edu/~chet/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]