OSDN Git Service

io/command: use glib GSpawn, instead of open-coding fork/exec
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Thu, 6 Oct 2022 11:36:55 +0000 (15:36 +0400)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Wed, 12 Oct 2022 15:22:01 +0000 (19:22 +0400)
commita95570e3e4d61a7c8e527e512246665c51caa6f4
tree335c5e60b5908261038044db448fb4660b3abbb9
parentbb06b0143b492203ab3d17640be1d819cfc33de7
io/command: use glib GSpawn, instead of open-coding fork/exec

Simplify qio_channel_command_new_spawn() with GSpawn API. This will
allow to build for WIN32 in the following patches.

As pointed out by Daniel Berrangé: there is a change in semantics here
too. The current code only touches stdin/stdout/stderr. Any other FDs
which do NOT have O_CLOEXEC set will be inherited. With the new code,
all FDs except stdin/out/err will be explicitly closed, because we don't
set the flag G_SPAWN_LEAVE_DESCRIPTORS_OPEN. The only place we use
QIOChannelCommand today is the migration exec: protocol, and that is
only declared to use stdin/stdout.

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20221006113657.2656108-5-marcandre.lureau@redhat.com>
include/io/channel-command.h
io/channel-command.c