diff options
-rwxr-xr-x | examples/unschroot_fs.py | 8 | ||||
-rwxr-xr-x | examples/unschroot_proc.py | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/examples/unschroot_fs.py b/examples/unschroot_fs.py index d5f67b0..fbc9bfc 100755 --- a/examples/unschroot_fs.py +++ b/examples/unschroot_fs.py @@ -421,7 +421,13 @@ def do_run_session(args: argparse.Namespace) -> None: args.command.append("bash") # Wait until Python has handed off to Perl. os.read(rfd, 1) - os.execvp(args.command[0], args.command) + try: + os.execvp(args.command[0], args.command) + except OSError as err: + print( + f"failed to exec {args.command[0]}: {err}", file=sys.stderr + ) + os._exit(127) else: rfd.close() linuxnamespaces.prctl_set_pdeathsig(signal.SIGKILL) diff --git a/examples/unschroot_proc.py b/examples/unschroot_proc.py index 96da4e5..e75b80b 100755 --- a/examples/unschroot_proc.py +++ b/examples/unschroot_proc.py @@ -718,7 +718,11 @@ class ContainerSupervisor(asyncvarlink.VarlinkInterface): # The container may change this, but it's still useful for # robustness when it does not. linuxnamespaces.prctl_set_pdeathsig(signal.SIGKILL) - os.execvp(command[0], command) + try: + os.execvp(command[0], command) + except OSError as err: + print(f"failed to exec {command[0]}: {err}", file=sys.stderr) + os._exit(127) # The caller should call Terminate next. Doing so will close the wpipe # and thus allow the child process to proceed. |