好烦啊,写了很久的文章,按了 ctrl + shift + H 莫名其妙的页面就关闭了
关于进程的结构和性质,就不作过多介绍,具体的能够参考下以前的几篇文章。php
一般而言,咱们打开的一个软件(QQ和微信),执行的一个脚本(hello.c、hello.php/hello.java :能够当作运行的一个程序)
都是经过进程的形式。java
下图:查看的是全部运行中的进程nginx
因此不管打开图形界面一个软件,或者终端运行 ,都是包装成一个进程的形式运行shell
进程的退出 : 是经过信号 退出的
以nginx 和 php-fpm 为例,他们都是经过父进程,fork 多个子进程。来执行并发请求。
子进程共享父进程的资源和堆栈信息,父进程便于管理子进程。
至关于同时打开多个QQ页面,每个窗口页面和一个好友聊天,接受和发送当前好友的消息。segmentfault
须要注意的是:fork 子进程,会返回二个值。 分别是当前父进程和新生成的子进程。
能够分别对他们得逻辑分别处理。bash
先运行父进程逻辑,再运行子进程逻辑。(当前能够经过vfork等暂停父进程的继续流程)服务器
进程的系统状态有一下几种微信
各个状态的调用和切换以下图多线程
IPC 进程通讯,也会影响状态
PS : process status 是一个管理进程状态的内核命令架构
和系统状态值对应,有如下集中状态值:
最经常使用的,咱们运行的状态值
PS的参数信息:
-a 是全部的终端
-A: 包括内核的
-r : running 包括正在运行的
-o : 分类输出
proc 里面包含什么信息
参考nginx 打开的文件
在介绍终端以前,先简单的介绍下控制台。
以下图所述,控制台通常在服务器独享,客户端链接的地方是终端,能够有多个。
两者之间的关系:
伪终端的架构
// 查看当前终端名
tty
默认打开一个 bash 和一个虚拟终端 /dev/tty1
构成了一个回话。(用户登陆)
bash : 就是一个shell 进程
而后敲命令:就是从新开启新的进程组
使用伪终端
ctrl + c 终止后
s + 表明 又返回了前台进程组了
ctrl + c : 发给了前台进程组了
而后经过shell 切换到了新的前台控制组
没有登陆的终端,没有bash
不断的循环这个过程