当前位置: 首页 > news >正文

Linux中的进程入门

冯诺依曼体系结构

操作系统(Operator System)

进程控制块(PCB)

struct task_struct{//该进程的所有属性//该进程对应的代码和属性地址struct task_struct* next;
};

struct task_struct 内核结构体——>创建内核结构体对象(task_struct)--->将对象和数据关联起来。

进程=内核数据结构(task_struct)+ 进程对应的磁盘代码

 while(true){cout<<"son:pid: "<<getpid()<<"    parent: "<<getppid()<<endl;sleep(1);}

son:pid: 6221    parent: 5912
son:pid: 6221    parent: 5912
son:pid: 6221    parent: 5912

son:pid: 6166parent: 5912
son:pid: 6166parent: 5912

多次运行父进程ppid不变。

命令行上启动的进程,一般父进程没有特殊情况的话,都是bash!!!

./"proc"
A proc, pid : 4018,ppid : 3997,id : 4019
A proc, pid : 4019,ppid : 4018,id : 0

fork

通过fork可以子进程。

 pid_t id=fork();printf("A proc, pid : %d,ppid : %d,id : %d\n",getpid(),getppid(),id);sleep(2);
pid_t id=fork();//printf("A proc, pid : %d,ppid : %d,id : %d\n",getpid(),getppid(),id);if(id==0){while(1){printf("Son proc, pid : %d,ppid : %d,id : %d\n",getpid(),getppid(),id);sleep(1);}}else if(id>0){while(1){printf("Par proc, pid : %d,ppid : %d,id : %d\n",getpid(),getppid(),id);sleep(1);}}else{}

Par proc, pid : 6856,ppid : 5912,id : 6857
Son proc, pid : 6857,ppid : 6856,id : 0
Par proc, pid : 6856,ppid : 5912,id : 6857
Son proc, pid : 6857,ppid : 6856,id : 0
Par proc, pid : 6856,ppid : 5912,id : 6857
Son proc, pid : 6857,ppid : 6856,id : 0

总结

fork()之后,会有父进程和子进程两个进程执行后续代码

fork后续的代码,被父子进程共享

通过返回值不同,让父子进程执行后续共享代码的一部分。

http://www.lryc.cn/news/442997.html

相关文章:

  • Redis面试真题总结(三)
  • ARM/Linux嵌入式面经(三三):大疆
  • 《DevOps实践指南》笔记-Part 2
  • 树莓派智能语音助手实现音乐播放
  • 【sgCreateCallAPIFunctionParam】自定义小工具:敏捷开发→调用接口方法参数生成工具
  • 完整版:NacosDocker 安装
  • mysql RR是否会导致幻读?
  • 一篇进阶Python深入理解函数之高阶函数与函数式编程
  • python中Web开发框架的使用
  • 【AI视频】Runway:Gen-2 运镜详解
  • Python “函数” ——Python面试100道实战题目练习,巩固知识、检查技术、成功就业
  • [产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发
  • FB仿真模拟PID曲线数据
  • 【变化检测】基于ChangeStar建筑物(LEVIR-CD)变化检测实战及ONNX推理
  • kafka动态认证 自定义认证 安全认证-亲测成功
  • 航空航司reese84逆向
  • 【HTTP】请求“报头”,Referer 和 Cookie
  • 使用sqoop报错
  • 一个简单的基于C语言的HTTP代理服务器的案例
  • Linux学习-Ansible(二)
  • [SDX35]SDX35硬件使用512MB内存,实际只初始化256MB问题分析及解决方案
  • S3C2440中断
  • 编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MinGW版)
  • SQLyou基础用法讲解
  • Can‘t get Kerberos realm
  • [python]从零开始的PySide安装配置教程
  • LeetCode[中等] 74.搜索二维矩阵
  • overleaf如何下载论文的pdf
  • Java 每日一刊(第13期):this super static
  • 关于一些Spring的配置的作用