日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Linux中的clone()函數

系統 2207 0

int clone(int (*fn)(void *), void *child_stack, int flags, void *arg);

這里fn是函數指針,我們知道進程的4要素,這個就是指向程序的指針,就是所謂的“劇本", child_stack明顯是為子進程分配系統堆棧空間(在linux下系統堆棧空間是2頁面,就是8K的內存,其中在這塊內存中,低地址上放入了值,這個值就是進程控制塊task_struct的值),flags就是標志用來描述你需要從父進程繼承那些資源, arg就是傳給子進程的參數)。下面是flags可以取的值

標志???????????????????含義

?CLONE_PARENT??創建的子進程的父進程是調用者的父進程,新進程與創建它的進程成了“兄弟”而不是“父子”

?CLONE_FS??????????子進程與父進程共享相同的文件系統,包括root、當前目錄、umask

?CLONE_FILES?????子進程與父進程共享相同的文件描述符(file descriptor)表

?CLONE_NEWNS??在新的namespace啟動子進程,namespace描述了進程的文件hierarchy

?CLONE_SIGHAND??子進程與父進程共享相同的信號處理(signal handler)表

?CLONE_PTRACE??若父進程被trace,子進程也被trace

?CLONE_VFORK????父進程被掛起,直至子進程釋放虛擬內存資源

?CLONE_VM??????????子進程與父進程運行于相同的內存空間

?CLONE_PID?????????子進程在創建時PID與父進程一致

?CLONE_THREAD???Linux 2.4中增加以支持POSIX線程標準,子進程與父進程共享相同的線程群

下面的例子是創建一個線程(子進程共享了父進程虛存空間,沒有自己獨立的虛存空間不能稱其為進程)。父進程被掛起當子線程釋放虛存資源后再繼續執行。

與系統調用clone功能相似的系統調用有fork,但fork事實上只是clone的功能的一部分,clone與fork的主要區別在于傳遞了幾個參數,而當中最重要的參數就是conle_flags,下表是系統定義的幾個clone_flags標志:
標志 Value 含義
CLONE_VM 0x00000100 置起此標志在進程間共享地址空間
CLONE_FS 0x00000200 置起此標志在進程間共享文件系統信息
CLONE_FILES 0x00000400 置起此標志在進程間共享打開的文件
CLONE_SIGHAND 0x00000800 置起此標志在進程間共享信號處理程序
如果置起以上標志所做的處理分別是:
置起CLONE_VM標志:

Linux中的clone()函數


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 庐江县| 得荣县| 宁武县| 新竹市| 昌黎县| 高雄市| 陆河县| 惠东县| 新巴尔虎左旗| 腾冲县| 福州市| 饶阳县| 西平县| 滁州市| 曲麻莱县| 卢氏县| 汽车| 马鞍山市| 莲花县| 江门市| 刚察县| 元江| 收藏| 竹北市| 平利县| 陇西县| 仁布县| 凯里市| 利川市| 蒙城县| 澳门| 榆社县| 博爱县| 安福县| 湖州市| 沈阳市| 河池市| 灌南县| 开远市| 漳平市| 纳雍县|