-
- Downloads
adverb, wrap: Add --terminate-timeout, --terminate-idle-timeout options
This will let us have the following logic when sharing a container
between multiple commands using -launcher and -launch:
* For setup commands, don't wrap the launched command in the adverb.
If the setup command starts background processes, they'll continue
to run. This matches how installscript commands have historically
worked for Windows (and Wine/Proton) games in Steam: the setup
command is launched with system(), and can leak background
processes like wineserver.
* For the main game, wait for all processes to exit, by wrapping
the launched command in the adverb, with --subreaper only. This
matches how native Linux games, and the main command of
Windows/Wine/Proton games, have historically worked in Steam.
* When all processes belonging to the main game have exited,
the -launcher can exit, at which point the subreaper that wraps it
can clean up any background processes from the setup commands.
--terminate-idle-timeout can be used to wait a few seconds before
sending SIGTERM, if desired.
Because the adverb now blocks SIGCHLD, we need to unblock it before
running the child process; otherwise the child process will inherit
the blocked signal, breaking things like g_spawn_async().
Signed-off-by:
Simon McVittie <smcv@collabora.com>
Loading
Please register or sign in to comment