好煩啊,寫了很久的文章,按了 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
不斷的循環這個過程