[lxc-devel] [PATCH RFC] fix lxc-info printing duplicate lines
Serge Hallyn
serge.hallyn at ubuntu.com
Thu Apr 3 23:37:06 UTC 2014
Quoting Dwight Engen (dwight.engen at oracle.com):
> When lxc-info's stdout is not line buffered (ie. "lxc-info -n foo |more")
> the first three lines will be duplicated. This is because c->get_ips()
> comes next and it forks and the child will exit() causing its fds to be
> closed which flushes out its (fork duplicated) stdio buffers. The lines are
> then duplicated when the parent actually gets around to flushing out its
> stdio. This causes problems for programs (such as the lxc-webpanel) which
> are popen()ing lxc-info.
>
> The fix here isn't necessarily the right one, but does show what the
> problem is. Seems like maybe we should fix this inside of get_ips(), for
> other API callers as well.
>
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/lxc_info.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/src/lxc/lxc_info.c b/src/lxc/lxc_info.c
> index 96cb966..24d6f9b 100644
> --- a/src/lxc/lxc_info.c
> +++ b/src/lxc/lxc_info.c
> @@ -313,6 +313,7 @@ static int print_info(const char *name, const char *lxcpath)
> }
>
> if (ips) {
> + fflush(stdout);
> char **addresses = c->get_ips(c, NULL, NULL, 0);
> if (addresses) {
> char *address;
> --
> 1.8.5.3
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
More information about the lxc-devel
mailing list