进程

#include <stdlib.h>
#include <stdlib.h>

int main(){
    int i;
    pid_t pid = fork();
    printf("xxxxxxxxx\n");
    for(i = 0; i < 5; i++){
        pid = fork();       //循环创建子进程
        if(pid == -1){
            perror("fork error");
        }else if(pid == 0){
            break;      //子进程直接退出
        }
        //主进程 循环创建
    }
    if(i < 5){
     sleep(i); printf(
"i'm %d child, pid = %d\n", i+1,getpid()); //打印自己退出 }else{
    sleep(i);
    printf("i'm %d parent\n");
  }
return 0; }


刚fork之后
父子相同处: 全局变量,data, .text.栈 堆 环境变量 用户ID 宿主目录 进程工作目录, 信号处理方式
父子不同处: 进程ID fork返回值, 父进程ID 进程运行时间 闹钟 未决信号集  
  父子进程间遵循 读时共享,写时复制的原则。
  父子间进程共享 1.文件描述符(打开文件的结构体(0-3G))
          2.mmap建立的映射区
          
set follow-fork-mode child
set follow-fork-mode parent



 

posted @ 2021-09-20 16:48  __help  阅读(32)  评论(0)    收藏  举报