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

c语言——【linux】多进程编程 【进程的创建,相关shell指令,进程状态切换,回收资源,守护进程等】

1.思维导图 

 

 2.进程的创建

函数原型:pid_t fork(void);

功能描述:以当前进程为父进程,创建一个子进程

进程链和进程扇的创建

3.多进程具体使用

 3.1进程替换 exec 函数一族

int execl(const char *path, const char *arg, ...
/* (char  *) NULL */);
int execlp(const char *file, const char *arg, ...
/* (char  *) NULL */);
int execle(const char *path, const char *arg, ...
/*, (char *) NULL, char * const envp[] */);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],
char *const envp[]);

 list组:可变参的形式,去接受替换进程,所有可能存在的外部参数
vector组:以数组的形式,去存放替换进程,所有可能存在的外部参数

函数名中不带p的:
    第一个参数必须传一个具体的路径,如果没有传具体路径,则会在当前路径中寻找指定的进程,如果当前路径中没找到,则替换失败
函数名中带p:
    第一个参数没有强制要求传一个具体的路径,如果没传具体路径的话,会去环境变量的 PATH 标签中寻找具体的程序
    环境变量的PATH标签有哪些路径:通过shell指令 env查看

3.2  myshell的实现

3.3 execle的使用

4. 如何创建守护进程

一个能够在后台持续运行的,不受任何影响的进程,除非关闭电源,否则该进程一直运行

① 让该进程成为一个孤儿进程

成为孤儿进程的目的在于:初步脱离终端的管控,起码能够实现 ctrl_c 不会结束该进程的运行

② 脱离用户组的管控,让该进程成为一个独立的会话组的组长

目的在于:保证用户进程结束之后,该进程也不会结束

函数原型:pid_t setsid(void);

功能描述:让调用该函数的进程,脱离原会话组,成为一个新的会话组的组长

返回值:成功返回新的会话组id,失败返回-1

③ 切换工作路径到根目录

目的是:如果守护进程输出一些错误信息的话,保证这些错误信息绝对有地方去输出

 ④ 设置掩码

所谓的掩码就是在创建文件的时候,屏蔽掉一些文件的权限

比如:当前掩码为 0111,然后创建文件的时候,选择的权限为 0777

那么创建文件的时候,会屏蔽掉 0777 权限中 0111 权限,怎么屏蔽 0777 & ~0111

所以最终文件会以 0666 权限创建

⑤ 重定向标准输出流,标准错误流,关闭标准输入流close(0)

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

相关文章:

  • macos 搭建 ragflow 开发环境
  • 信创改造-龙蜥操作系统搭载MySql、Tomcat等服务
  • Java 数据结构 队列之双端队列 常用方法 示例代码 及其实现
  • 【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用
  • arcgis中生成格网矢量带高度
  • 使用gtsam添加OrientedPlane3Factor平面约束因子
  • 换了城市ip属地会变吗?为什么换了城市IP属地不变
  • 移远通信多模卫星通信模组BG95-S5获得Skylo网络认证,进一步拓展全球卫星物联网市场
  • IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南
  • 简聊MySQL并发事务中幻读、虚读问题的解决方案
  • 【搭建JavaEE】(2)Tomcat安装配置和第一个JavaEE程序
  • 【Qt】01-了解QT
  • websocket股票行情接口
  • 朴素贝叶斯分类器
  • 智能化植物病害检测:使用深度学习与图像识别技术的应用
  • vim基本命令(vi、工作模式、普通模式、插入模式、可视模式、命令行模式、复制、粘贴、插入、删除、查找、替换)
  • Qt 自动根据编译的dll或exe 将相关dll文件复制到目标文件夹
  • 探索新能源汽车“芯”动力:AUTO TECH China 2025广州国际新能源汽车功率半导体技术展盛况空前
  • Kafka权威指南(第2版)读书笔记
  • WORD转PDF脚本文件
  • electron 打包后的 exe 文件,运行后是空白窗口
  • 数据库重连 - 方案
  • 从 PostgreSQL 中挽救损坏的表
  • 【Vue3 入门到实战】1. 创建Vue3工程
  • rtthread学习笔记系列(10/11) -- 系统定时器
  • mock服务-通过json定义接口自动实现mock服务
  • 像JSONDecodeError: Extra data: line 2 column 1 (char 134)这样的问题怎么解决
  • C#版 软件开发6大原则与23种设计模式
  • java8 springboot 集成javaFx 实现一个客户端程序
  • MySQL(高级特性篇) 06 章——索引的数据结构