1. 程式人生 > 其它 >linux:呼叫fork()建立子程序

linux:呼叫fork()建立子程序

技術標籤:linuxlinux

linux:通過fork()建立子程序

系統呼叫fork()後,倆個程序將執行相同的程式段,但是擁有各自不同的堆段,棧段,資料段,每個子程式都可修改各自的資料段,堆段,和棧段

1.通過呼叫fork()後,產生了兩個不同的pid值

#include <stdio.h>
#include <unistd.h>

int count1=0;
int main(void)
{
    int pid;
    int count2=0;
    count1++;
    count2++;
    printf("count1=%d,count2=%d\n"
,count1,count2); pid=fork(); count1++; count2++; printf("count1=%d,count2=%d\n",count1,count2); printf("pid=%d\n",pid); return 0; }

在這裡插入圖片描述
2.呼叫fork()後,錯誤返回-1,子程序返回0,父程序返回子程序的pid值

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int
main() { int ret = fork(); if(ret < 0){ perror("fork"); return 1; } else if(ret == 0){ //child printf("I am child : %d!, ret: %d\n", getpid(), ret); }else{ //father printf("I am father : %d!, ret: %d\n", getpid(), ret); } sleep(1); return 0; }

在這裡插入圖片描述