[PATCH] wpa_cli: Don't buffer stdout.
Slava Monich
slava.monich at jolla.com
Fri Jun 9 05:46:53 PDT 2017
On 08/06/17 23:21, greearb at candelatech.com wrote:
> From: Ben Greear <greearb at candelatech.com>
>
> I am trying to read from a wpa_cli process using a perl script,
> and it appears that wpa_cli was buffering output and so my script
> would not see events properly. This patch apepars to fix it.
>
> Signed-off-by: Ben Greear <greearb at candelatech.com>
Another way to fix this problem is to allocate a pty (pseudo terminal)
and connect the output of the child process to that, to turn on line
buffering in the stdio library [1]. Don't know how to do that from perl
though...
It's a bit more complicated but once you learn how to do that, you no
longer need to modify the program you are spawning in order to pull the
output from it line by line.
[1]: http://rachid.koucha.free.fr/tech_corner/pty_pdip.html
Cheers,
-Slava
> ---
> wpa_supplicant/wpa_cli.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/wpa_supplicant/wpa_cli.c b/wpa_supplicant/wpa_cli.c
> index 4cdc4fb..510f385 100644
> --- a/wpa_supplicant/wpa_cli.c
> +++ b/wpa_supplicant/wpa_cli.c
> @@ -4410,6 +4410,11 @@ int main(int argc, char *argv[])
> }
> }
>
> + /* Don't buffer stdout, we need to see events immediately as they
> + * happen.
> + */
> + setbuf(stdout, NULL);
> +
> interactive = (argc == optind) && (action_file == NULL);
>
> if (interactive)
More information about the Hostap
mailing list