Is there any support of the syscall clone(2) (not os.fork
) in Python? I want to play with Linux namespaces under Python but it seems that there is not a l
If you want to have "fork() but with new namespace" semantics, you can directly call the SYS_clone
syscall instead. Note that if you do so, the os.getpid()
method will return the wrong process ID in the child because glibc caches the process ID and doesn't know about the SYS_clone
invocation to invalidate its cache.
Assuming x86_64 (NR_clone == 56
, NR_getpid == 39
), you can call libc.syscall(56, signal.SIGCHLD|0x000200000, 0 0 0)
to "fork", and then libc.syscall(39)
to get the current PID of the "forked" child process.