diff options
-rw-r--r-- | linuxnamespaces/__init__.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/linuxnamespaces/__init__.py b/linuxnamespaces/__init__.py index 21afd4a..ab8fa40 100644 --- a/linuxnamespaces/__init__.py +++ b/linuxnamespaces/__init__.py @@ -36,15 +36,18 @@ class run_in_fork: self.efd = None if start else EventFD() self.pid = os.fork() if self.pid == 0: + code = 0 try: if self.efd is not None: self.efd.read() self.efd.close() self.efd = None function() + except SystemExit as err: + code = err.code except: - os._exit(1) - os._exit(0) + code = 1 + os._exit(code) @classmethod def now(cls, function: typing.Callable[[], None]) -> typing.Self: @@ -101,6 +104,7 @@ class async_run_in_fork: self.efd = None if start else EventFD() self.pid = os.fork() if self.pid == 0: + code = 0 try: if self.efd: self.efd.read() @@ -108,9 +112,11 @@ class async_run_in_fork: self.efd = None asyncio.set_event_loop(None) function() + except SystemExit as err: + code = err.code except: - os._exit(1) - os._exit(0) + code = 1 + os._exit(code) watcher.add_child_handler(self.pid, self._child_callback) @classmethod |