fork函數01

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include <signal.h>
#include <errno.h>

int main(void)
{
    pid_t fpid;     // pid_t-->unsigned int

    int count = 0;

    fpid = fork();

    // 錯誤返回
    if (fpid == -1) {
        printf("pid < 0 err.\n");
        return -1;
    }

    // 返回子進程pid
    if (fpid > 0) {
        printf("parent: %d, child: %d\n", getpid(), fpid);
        count++;
        //sleep(5);
    }

    // 父進程
    else if (fpid == 0) {
        printf("child: %d, parent: %d\n", getpid(), getppid());
        count++;
        // 孤兒進程: 父進程先執行完,父進程釋放後,子進程還在運行
        sleep(100);
    }

    printf("count: %d\n", count);

    return 0;
}

// 最後的printf函數執行了兩次,count的結果都是1
發佈了39 篇原創文章 · 獲贊 22 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章