summaryrefslogtreecommitdiff
path: root/linuxnamespaces
diff options
context:
space:
mode:
Diffstat (limited to 'linuxnamespaces')
-rw-r--r--linuxnamespaces/__init__.py14
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