Linuxc高級編程之進程4

1.在父進程中定義變量n,在子進程中對變量n進行++操作;並且打印變量n的值,打印子進程pid;
2.在父進程中打印變量n的值,並且打印父進程pid。
3.要求分別用fork和vfork創建子進程

源代碼:
fork.c
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(int argc,char*argv[])
{
 int num=1;
 int pid;
 pid=fork();
 if(pid<0)
 {
   printf("fork error!\n");
   return 0;
 }else if(pid==0)
 {
  printf("this is child,pid:%d,num:%d\n",getpid(),++num);
  exit(0);
 }else
 { 
 sleep(2);
 printf("this is parent,pid:%d,num:%d\n",getpid(),num);
 }
return 0;

vfork.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
        int num = 1;
        int pid;
        pid = vfork();
        if(pid <0 )
        {
                printf("vfork error!\n");
                return 0;
        }else if(pid == 0)
        {
                printf("this is child,pid:%d,num:%d\n",getpid(),++num);
                _exit(0);
        }else
        {
                printf("this is parent, pid:%d, num:%d\n",getpid(), num);
        }
        return 0;
}

解析
在vfork內++後,父進程的相應變量也會++
而在fork內++後,fork內的變量會++,但是父進程中的變量不變。


fork------參考:點擊打開鏈接
https://blog.csdn.net/qq_37192076/article/details/80391337
vfork-------參考:點擊打開鏈接
https://blog.csdn.net/qq_37192076/article/details/80391598

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章