「理解Unix程式」讀書筆記
date: 2017-10-13 16:17:28 title: 「理解Unix程式」讀書筆記
百度腦圖 - 理解UNIX程式: http://naotu.baidu.com/file/8945ac178c9961cda97a17a44de511ad?token=1447b9bed19693b2
圖靈社群 - 理解UNIX程式: http://www.ituring.com.cn/book/1081
知道如何使用計算機,但對於計算機的工作原理卻一無所知; 對工作原理有了深入的瞭解之後,可以更快地 理解並診斷出現的問題
能力越大,責任也越大
使用者空間(userland)和核心
系統呼叫
manpages
所有的程式碼都是在程式中執行的
程式皆有標識 pid
常常會在日誌檔案中發現pid
程式皆有父 ppid
程式皆有檔案描述符
檔案描述符代表開啟的檔案
Unix哲學:在Unix世界中,萬物皆為檔案
檔案描述符只是用來跟蹤開啟的資源
每個Unix程式都有三個開啟的資源,它們是標準輸入(STDIN)、標準輸出(STDOUT)和標準錯誤(STDERR)
程式皆有資源限制
核心為程式施加了某些資源限制
軟限制與硬限制
sysctl(8)
程式皆有環境
環境變數
系統呼叫不能直接操作環境變數
程式皆有引數
argv是argument vector
ENV並不是Hash
ARGV只是一個Array
程式皆有名
兩種運作在程式自身層面上的機制可以用來互通訊息。一個是程式名稱,另一個是退出碼。
程式皆有退出碼
另一種結束程式的方法是使用一個未處理的異常
程式皆可衍生
程式從父程式處繼承了其所佔用記憶體中的所有內容,以及所有屬於父程式的已開啟的檔案描述符
竟然同時執行了if語句的if和else程式碼塊
其實也可以通過block來使用fork
守護程式
與脫離終端會話的程式進行通訊
Unix訊號
寫時複製(copy-on-write,CoW)
程式可待
即發即棄(fire and forget)
看顧(Babysitting)
競爭條件(race conditions)
master/worker
殭屍程式
Good Things Come to Those Who Wait。
程式皆可獲得訊號
訊號投遞是不可靠的
任何一行程式碼都能夠被訊號中斷
訊號是一種非同步通訊
(1) 忽略該訊號 (2) 執行特定的操作 (3) 執行預設的操作
訊號由核心傳送
重定義訊號
忽略訊號
捕獲一個訊號有點像使用一個全域性變數
如果程式在接收到一個訊號的同時還在處理其他的訊號
程式皆可互通
程式間通訊(簡稱IPC)
管道和套接字對(socket pairs)。
共享管道
有自己的檔案描述符以及其他的一切,因此也可以與子程式共享。
流與訊息: 沒有開始和結束的概念。
之後跟著一些特定協議的分隔符(delimiter)
遠端IPC: TCP RPC 分散式系統
管道和套接字都是對程式間通訊的有益抽象。
守護程式是在後臺執行的程式,不受終端使用者控制
首個程式
程式組和會話組
會話組是更高一級的抽象,它是程式組的集合
/dev/null
生成終端程式
除非你真的需要,通常我們都會避免傳遞字串,而是儘可能地傳遞陣列。
與Unix程式打交道事關兩件事:抽象和通訊。
相關文章
- 《LINUX與UNIX SHELL程式設計指南》讀書筆記(轉)Linux程式設計筆記
- 程式程式設計1 – Unix環境高階程式設計7章讀書筆記程式設計筆記
- 程式程式設計2 – Unix環境高階程式設計8章讀書筆記程式設計筆記
- UNIX訊號(signal)程式設計 - UNIX高階環境程式設計第10章讀書筆記程式設計筆記
- 程式程式設計3 - UNIX高階環境程式設計第9章讀書筆記程式設計筆記
- 讀書筆記-乾淨程式碼筆記
- 讀書筆記...筆記
- 讀書筆記筆記
- 【技術分享】《深入理解Elasticsearch》讀書筆記Elasticsearch筆記
- 《讀書與做人》讀書筆記筆記
- 《程式設計匠藝》讀書筆記程式設計筆記
- 夢斷程式碼讀書筆記(一)筆記
- 《夢斷程式碼》讀書筆記(二)筆記
- 《深入理解Java虛擬機器》讀書筆記Java虛擬機筆記
- Cucumber讀書筆記筆記
- 散文讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- CoreJava讀書筆記-------Java筆記
- flask讀書筆記Flask筆記
- Vue讀書筆記Vue筆記
- MONGODB 讀書筆記MongoDB筆記
- Qt讀書筆記QT筆記
- Node讀書筆記筆記
- SAP讀書筆記筆記
- YII讀書筆記筆記
- iptables 讀書筆記筆記
- Makefile 讀書筆記筆記
- mysql讀書筆記MySql筆記
- 鎖讀書筆記筆記
- dataguard讀書筆記筆記
- 讀書筆記3筆記
- 讀書筆記2筆記
- postgres 讀書筆記筆記
- 《JavaScript程式設計精解》--讀書筆記JavaScript程式設計筆記
- 《Java程式設計思想》讀書筆記一Java程式設計筆記
- 讀書筆記-Java程式設計思想-03筆記Java程式設計
- 讀書筆記-程式碼整潔之道(一)筆記
- Java遊戲程式設計讀書筆記(轉)Java遊戲程式設計筆記