《C++高并发服务器笔记——第二章Linux多进程开发》

《C++高并发服务器笔记——第二章》

  • 2.1、进程概述
    • ①.程序和进程
    • ②.单道、多道程序设计
    • ③.时间片
    • ④.并行和并发
    • ⑤.进程控制块(PCB)
  • 2.2、进程状态转换
    • 1.进程的状态
      • ①.进程的三个状态表示
      • ②.进程的五个状态表示
    • 2.进程相关命令
      • ①.查看进程
      • ②.STAT参数意义
      • ③.实时显示进程动态
      • ④.杀死进程
      • ⑤.进程号和相关函数
  • 2.3、进程创建
    • 1.进程创建简介
    • 2.代码举例
  • 2.4、父子进程虚拟地址空间
    • 1.父子进程简介
    • 2.写实拷贝
    • 3.举例说明
  • 2.5、父子进程关系以及GDB多进程调试
    • 1.父子进程关系
    • 2.GDB多进程调试
      • ①.设置调试进程
      • ②.调试模式
  • 2.6、exec函数族
    • 1.exec函数族介绍
      • ①exec的函数族
      • ②execl的参数意义
      • ③execl
        • execl的介绍
        • execl的使用
      • ④execlp(execv,execve)
        • execlp的介绍
        • execlp的使用
  • 2.7、进程退出、孤儿进程、僵尸进程
    • 1.进程退出
      • ①进程退出函数
      • ②进程退出函数应用
    • 2.孤儿进程
      • ①孤儿进程介绍
      • ②孤儿进程实际操作
    • 3.僵尸进程
      • ①僵尸进程介绍
      • ②僵尸进程实际操作
  • 2.8、wait函数
    • 1.进程回收
      • ①wait函数的介绍
      • ②wait函数的使用
    • 2.退出信息相关宏函数
      • ①退出信息相关宏函数介绍
      • ②退出信息相关宏函数举例使用
  • 2.9、waitpid函数
    • 1.waitpid函数
      • ①waitpid函数介绍
      • ②waitpid函数的使用
  • 2.10、进程间通信简介
    • 1.进程间通讯概念
    • 2.进程间的通信方式
  • 2.11、匿名管道概述
    • 1.匿名管道
    • 2.管道的特点
    • 3.为什么可以使用管道进行进程间通信
    • 4.管道的数据结构
  • 2.12、父子进程通过管道进行通信
    • 1.匿名管道的使用
    • 2.pipe管道函数
      • ①pipe函数介绍
      • ②pipe函数使用
    • 3.fpathconf函数
  • 2.13、匿名管道通信案例
    • 1.实现ps_aux命令
  • 2.14、管道的读写特点和管道设计为非阻塞
    • 1.管道读写的特点
    • 2.设置管道读端非阻塞
  • 2.15、有名管道介绍及使用
    • 1.有名管道
      • ①有名管道介绍
      • ②有名管道的使用说明
    • 2.有名管道的创建
      • ①有名管道的参数介绍
      • ②有名管道的创建(代码实现)
    • 3.有名管道用于进程通信
      • ①使用的注意事项
      • ②有名管道用于进程通信(代码实现)
        • 管道写端代码
        • 管道读端代码
  • 2.16、有名管道实现简单版聊天
    • 1.实现聊天的框架图
    • 2.代码实现
      • A用户代码
      • B用户代码
  • 2.17、内存映射(1)
    • 1.内存映射的介绍
    • 2.内存映射相关系统调用
    • 3.内存映射使用介绍
    • 4.内存映射实现父子进程通信
    • 5.内存映射实现非关系通信
      • ①chatA代码
      • ②chatB代码
  • 2.19、信号概述
    • 1.信号的概念
    • 2.Linux信号一览表
    • 3.信号的5种默认处理动作
  • 2.20、kill、raise、abort函数
    • 1.如何查看core信息
    • 2.如果无法生成core文件
    • 3.信号相关的函数
      • ①kill、raise、abort函数介绍
      • ②kill、raise、abort函数使用
  • 2.21、alarm函数
    • 1.alarm函数介绍
    • 2.alarm函数返回值实现
    • 2.实现1秒钟电脑能数多少个数?
  • 2.22、setitimer定时器函数
    • 1.setitimer定时器函数介绍
    • 2.setitimer函数实现
  • 2.23、signal信号捕捉函数
    • 1.signal函数使用介绍
    • 2.signal函数实现
  • 2.24、信号集及相关函数
    • 1.信号集概念介绍
    • 2.未决信号集和阻塞信号在内核区
    • 3.信号集相关函数
    • 4.未决信号集和阻塞信号集介绍
    • 5.信号集函数的使用
      • ①信号集函数的使用介绍
      • ②信号集函数的使用
  • 2.25、sigprocmask函数使用
    • 1.sigprocmask函数使用介绍
    • 2.sigpromask函数使用
  • 2.26、sigaction信号捕捉函数
    • 1.信号捕捉函数的捕捉过程
    • 2.sigaction函数
      • ①sigaction函数的介绍
      • ②sigaction函数使用
  • 2.27、SIGCHLD信号
    • 1.SIGCHLD的介绍
    • 2.捕捉SIGCHLD信号解决僵尸进程问题
  • 2.28、内存共享(1)
    • 1.共享内存是什么?
    • 2.共享内存使用步骤
      • ①shmget创建函数
      • ②shmat关联内存函数
      • ③可以直接对共享内存进行操作
      • ④shmdt取消关联内存函数
      • ⑤shmctl标记删除共享内存函数
    • 3.共享内存操作函数
    • 4.共享内存操作命令
    • 5.共享内存操作函数详细介绍
      • ①shmget
      • ②shmat
      • ③shmdt
      • ④shmctl
      • ⑤ftok
    • 6.共享内存实际使用
      • ①write_shm文件
      • ②read_shm文件
  • 2.29、共享内存(2)
    • 1、问题1:操作系统如何知道一块共享内存被多少个进程关联?
    • 2、问题2:可不可以对共享内存进行多次删除shmctl
    • 3、共享内存和内存映射的区别
  • 2.30、守护进程(1)
    • 1.终端是什么
    • 2.进程组是什么
    • 3.会话是什么
    • 4.进程组、会话、控制终端之间的关系
    • 5.进程组、会话操作有哪些函数
    • 6.守护进程是什么
  • 2.31、守护进程(2)
    • 1.守护进程的创建步骤
    • 2.什么情况下子进程不会继承父进程的组ID
    • 3.哪些操作会导致子进程的组ID发生改变
    • 4.kill怎么杀掉守护进程的
    • 实现守护进程

2.1、进程概述

①.程序和进程

②.单道、多道程序设计

③.时间片

④.并行和并发

⑤.进程控制块(PCB)

2.2、进程状态转换

1.进程的状态

①.进程的三个状态表示

②.进程的五个状态表示

2.进程相关命令

①.查看进程

②.STAT参数意义

③.实时显示进程动态

④.杀死进程

⑤.进程号和相关函数

2.3、进程创建

1.进程创建简介

2.代码举例

2.4、父子进程虚拟地址空间

1.父子进程简介

2.写实拷贝

3.举例说明

2.5、父子进程关系以及GDB多进程调试

1.父子进程关系

2.GDB多进程调试

①.设置调试进程

②.调试模式

2.6、exec函数族

1.exec函数族介绍

①exec的函数族

②execl的参数意义

③execl

execl的介绍

execl的使用

④execlp(execv,execve)

execlp的介绍

execlp的使用

2.7、进程退出、孤儿进程、僵尸进程

1.进程退出

①进程退出函数

②进程退出函数应用

2.孤儿进程

①孤儿进程介绍

②孤儿进程实际操作

3.僵尸进程

①僵尸进程介绍

②僵尸进程实际操作

2.8、wait函数

1.进程回收

①wait函数的介绍

②wait函数的使用

2.退出信息相关宏函数

①退出信息相关宏函数介绍

②退出信息相关宏函数举例使用

2.9、waitpid函数

1.waitpid函数

①waitpid函数介绍

②waitpid函数的使用

2.10、进程间通信简介

1.进程间通讯概念

2.进程间的通信方式

2.11、匿名管道概述

1.匿名管道

2.管道的特点

3.为什么可以使用管道进行进程间通信

4.管道的数据结构

2.12、父子进程通过管道进行通信

1.匿名管道的使用

2.pipe管道函数

①pipe函数介绍

②pipe函数使用

3.fpathconf函数

2.13、匿名管道通信案例

1.实现ps_aux命令

2.14、管道的读写特点和管道设计为非阻塞

1.管道读写的特点

2.设置管道读端非阻塞

2.15、有名管道介绍及使用

1.有名管道

①有名管道介绍

②有名管道的使用说明

2.有名管道的创建

①有名管道的参数介绍

②有名管道的创建(代码实现)

3.有名管道用于进程通信

①使用的注意事项

②有名管道用于进程通信(代码实现)

管道写端代码

管道读端代码

2.16、有名管道实现简单版聊天

1.实现聊天的框架图

2.代码实现

A用户代码

B用户代码

2.17、内存映射(1)

1.内存映射的介绍

2.内存映射相关系统调用

3.内存映射使用介绍

4.内存映射实现父子进程通信

5.内存映射实现非关系通信

①chatA代码

②chatB代码

2.19、信号概述

1.信号的概念

2.Linux信号一览表

3.信号的5种默认处理动作

2.20、kill、raise、abort函数

1.如何查看core信息

2.如果无法生成core文件

3.信号相关的函数

①kill、raise、abort函数介绍

②kill、raise、abort函数使用

2.21、alarm函数

1.alarm函数介绍

2.alarm函数返回值实现

2.实现1秒钟电脑能数多少个数?

2.22、setitimer定时器函数

1.setitimer定时器函数介绍

2.setitimer函数实现

2.23、signal信号捕捉函数

1.signal函数使用介绍

2.signal函数实现

2.24、信号集及相关函数

1.信号集概念介绍

2.未决信号集和阻塞信号在内核区

3.信号集相关函数

4.未决信号集和阻塞信号集介绍

5.信号集函数的使用

①信号集函数的使用介绍

②信号集函数的使用

2.25、sigprocmask函数使用

1.sigprocmask函数使用介绍

2.sigpromask函数使用

2.26、sigaction信号捕捉函数

1.信号捕捉函数的捕捉过程

2.sigaction函数

①sigaction函数的介绍

②sigaction函数使用

2.27、SIGCHLD信号

1.SIGCHLD的介绍

2.捕捉SIGCHLD信号解决僵尸进程问题

2.28、内存共享(1)

1.共享内存是什么?

2.共享内存使用步骤

①shmget创建函数

②shmat关联内存函数

③可以直接对共享内存进行操作

④shmdt取消关联内存函数

⑤shmctl标记删除共享内存函数

3.共享内存操作函数

4.共享内存操作命令

5.共享内存操作函数详细介绍

①shmget

②shmat

③shmdt

④shmctl

⑤ftok

6.共享内存实际使用

①write_shm文件

②read_shm文件

2.29、共享内存(2)

1、问题1:操作系统如何知道一块共享内存被多少个进程关联?

2、问题2:可不可以对共享内存进行多次删除shmctl

3、共享内存和内存映射的区别

2.30、守护进程(1)

1.终端是什么

2.进程组是什么

3.会话是什么

4.进程组、会话、控制终端之间的关系

5.进程组、会话操作有哪些函数

6.守护进程是什么

2.31、守护进程(2)

1.守护进程的创建步骤

2.什么情况下子进程不会继承父进程的组ID

3.哪些操作会导致子进程的组ID发生改变

4.kill怎么杀掉守护进程的

实现守护进程

你可能感兴趣的:(C++,c++,服务器,linux,ubuntu)