From d83171b1fbbb809f7e5ed0daeed4435132817158 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Tue, 29 Apr 2025 14:20:22 +0200 Subject: move the get_cgroup utility function into the library --- examples/cgroup.py | 15 ++------------- linuxnamespaces/__init__.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/cgroup.py b/examples/cgroup.py index 34bf01b..2a423d3 100755 --- a/examples/cgroup.py +++ b/examples/cgroup.py @@ -18,19 +18,8 @@ import linuxnamespaces import linuxnamespaces.systemd -def get_cgroup(pid: int = -1) -> pathlib.PurePath: - """Look up the cgroup that the given pid or the running process belongs - to. - """ - return pathlib.PurePath( - pathlib.Path( - f"/proc/{pid}/cgroup" if pid > 0 else "/proc/self/cgroup" - ).read_text().split(":", 2)[2].strip() - ) - - def main() -> None: - mycgroup = get_cgroup() + mycgroup = linuxnamespaces.get_cgroup() if not os.access( pathlib.Path("/sys/fs/cgroup") / mycgroup.relative_to("/"), os.W_OK, @@ -45,7 +34,7 @@ def main() -> None: properties={"Delegate": True}, ), ) - mycgroup = get_cgroup() + mycgroup = linuxnamespaces.get_cgroup() except NotImplementedError: linuxnamespaces.systemd.reexec_as_transient_unit( properties={"Delegate": True} diff --git a/linuxnamespaces/__init__.py b/linuxnamespaces/__init__.py index a2c7985..cd30498 100644 --- a/linuxnamespaces/__init__.py +++ b/linuxnamespaces/__init__.py @@ -367,6 +367,17 @@ def bind_mount( mount(srcloc, tgtloc, None, mflags) +def get_cgroup(pid: int = -1) -> pathlib.PurePath: + """Look up the cgroup that the given pid or the current process belongs + to. + """ + return pathlib.PurePath( + pathlib.Path( + f"/proc/{pid}/cgroup" if pid > 0 else "/proc/self/cgroup" + ).read_text().split(":", 2)[2].strip() + ) + + _P = typing.ParamSpec("_P") class _ExceptionExitCallback: -- cgit v1.2.3