[V2 1/4] unshare: add --forward-signals option to argument parser
Kiran Rangoon <[email protected]> Tue, 13 Jan 2026 12:29:39 -0500
| Newsgroups | org.kernel.vger.util-linux |
|---|---|
| Message-ID | <[email protected]> |
Add a new --forward-signals command-line option that will allow unshare to forward SIGTERM and SIGINT signals from the parent process to the forked child process. This commit adds the option parsing infrastructure but does not implement the signal forwarding logic yet. The flag defaults to 0 (disabled) to maintain backward compatibility. Signed-off-by: Kiran Rangoon <[email protected]> --- sys-utils/unshare.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sys-utils/unshare.c b/sys-utils/unshare.c index 5370ab981..7e94b9148 100644 --- a/sys-utils/unshare.c +++ b/sys-utils/unshare.c @@ -801,6 +801,7 @@ int main(int argc, char *argv[]) OPT_MAPAUTO, OPT_MAPSUBIDS, OPT_OWNER, + OPT_FORWARD_SIGNALS, }; static const struct option longopts[] = { { "help", no_argument, NULL, 'h' }, @@ -817,6 +818,7 @@ int main(int argc, char *argv[]) { "fork", no_argument, NULL, 'f' }, { "kill-child", optional_argument, NULL, OPT_KILLCHILD }, + { "forward-signals", no_argument, NULL, OPT_FORWARD_SIGNALS }, { "mount-proc", optional_argument, NULL, OPT_MOUNTPROC }, { "mount-binfmt", optional_argument, NULL, OPT_MOUNTBINFMT }, { "map-user", required_argument, NULL, OPT_MAPUSER }, @@ -843,7 +845,7 @@ int main(int argc, char *argv[]) int setgrpcmd = SETGROUPS_NONE; int unshare_flags = 0; - int c, forkit = 0; + int c, forkit = 0, forward_signals = 0; uid_t mapuser = -1, owneruser = -1; gid_t mapgroup = -1, ownergroup = -1; struct map_range *usermap = NULL; @@ -1015,6 +1017,10 @@ int main(int argc, char *argv[]) keepcaps = 1; cap_last_cap(); /* Force last cap to be cached before we fork. */ break; + case OPT_FORWARD_SIGNALS: + forkit = 1; + forward_signals = 1; + break; case 'S': uid = strtoul_or_err(optarg, _("failed to parse uid")); force_uid = 1; -- 2.47.3