版权所有 © 2014 tutorialspoint
unshare - 取消进程执行上下文的部分关联
#include <sched.h> int unshare(int flags);
int unshare(int flags);
unshare() 允许进程取消其当前与其他进程共享的执行上下文的部分关联。例如命名空间之类的执行上下文的一部分在使用 fork(2) 或 vfork(2) 创建新进程时隐式共享,而其他部分,例如虚拟内存,则可能在使用 clone(2) 创建进程时通过显式请求共享。
unshare() 的主要用途是允许进程控制其共享执行上下文,而无需创建新进程。
flags 参数是一个位掩码,用于指定应取消共享执行上下文的哪些部分。此参数通过将以下常量中的零个或多个常量进行 OR 运算来指定
如果 flags 指定为零,则 unshare() 为无操作;不会对调用进程的执行上下文进行任何更改。
unshare() 系统调用是 Linux 特定的。
unshare() 系统调用是在 Linux 内核 2.6.16 中添加的。
并非所有在使用 clone(2) 创建新进程时可以共享的进程属性都可以使用 unshare() 取消共享。特别是,在内核 2.6.16 中,unshare() 没有实现反转 CLONE_SIGHAND、CLONE_SYSVSEM、CLONE_THREAD 或 CLONE_VM 效果的标志。如果需要,将来可能会添加此类功能。
clone (2)
fork (2)
vfork (2)
广告