linux:呼叫fork()建立子程序
阿新 • • 發佈:2021-02-13
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;
}