Python Glossary Русский

Python 3.12+Linuxosfunction

os.setns

os — namespaces

Attach the calling thread to a namespace by file descriptor (3.12+). Availability: Linux.

Syntax

os.setns(...)

It moves the calling thread into another process's namespace via a file descriptor from /proc/PID/ns/ — how tools like nsenter and docker exec work. It requires CAP_SYS_ADMIN. Joining some namespaces, such as PID, takes effect only for children.

Examples

import os
fd = os.open('/proc/1/ns/net', os.O_RDONLY)   # → ? только Linux: дескриптор сетевого namespace процесса с PID 1
os.setns(fd, os.CLONE_NEWNET)   # → ? только Linux: текущий поток переходит в этот сетевой namespace (нужны права CAP_SYS_ADMIN)
os.setns(fd)   # → ? nstype=0 по умолчанию: тип namespace не проверяется, берётся из самого дескриптора
ns = open('/proc/self/ns/uts')
os.setns(ns, os.CLONE_NEWUTS)   # → ? только Linux: вместо int можно передать любой объект с методом fileno()
os.setns(ns, os.CLONE_NEWNET)   # → OSError: [Errno 22] Invalid argument — дескриптор UTS не соответствует флагу CLONE_NEWNET

See also

Common errors

Open in the full glossarydocs.python.orgReport an inaccuracy