[學習筆記]fork深入理解

來源:互聯網
上載者:User

標籤:

#include<stdio.h>#include<stdlib.h>#include<string.h>#include <unistd.h>#include<errno.h>//fork進程//一次調用,兩個分支返回//Linux核心如何做到的這一點?//   每一個進程在各自的地址空間中返回//為什麼fork傳回值設計成>0是父進程分支 =0是子進程分支//   父子關係是1:n的關係,父親找孩子的pid比較難//fork理解角度:一次調用,2個分支同時運行, 並發概念.//fork子進程為什麼從fork之後運行,不是再從頭到尾從main函數重新來一遍?//   fork建立子進程的機制有關係. 子進程建立機制:寫實複製//   子進程要拷貝父進程的程式碼片段/堆棧段/資料區段/PCB進程式控制制塊(Linux核心管理進程的資料結構)//既然孩子進程拷貝了父進程的運行情境,所以孩子沒有必要再運行一邊了//系統錯誤碼放在全域變數errno裡面//在程式中,perror可以把errno對應的string列印出來//如果在shell下可以通過perror + 錯誤碼列印字串int main(void){        printf("sdfsd\n");        pid_t pid;    printf("befor fork pid:%d\n", getpid());        //fork子進程    pid = fork();    if(-1 == pid)    {        perror("fork err");        return 0;    }    if(pid > 0) // 大於0是父進程    {        printf("parent :%d\n", getpid());    }    if(0 == pid)    {        printf("chlid :%d\n", getpid());    }        printf("after fork\n");            return 0;}/*運行結果----------------sdfsdbefor fork pid:15554parent :15554after forkchlid :15555after fork-----------------*/

 

複製去Google翻譯翻譯結果 

[學習筆記]fork深入理解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.