版權所有 © 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)
廣告