### 創建進程
本章開始時演示了Hello World程序,其實已經創建了新的進程,通過`Bash`或者`zsh`這些Shell很容易創建新的進程,但Shell本身是怎么實現的呢?我們又能不能用Go實現類似Shell的功能呢?
### 系統調用
原來這一切都是操作系統給我們做好的,然后暴露了使用的API接口,這就是系統調用。Linux或者其他Unix-like系統都提供了`fork()`和`exec()`等接口,Bash或者我們寫的程序都可以通過調用這些接口來操作進程。
### Go創建進程
而Go已經封裝了與進程相關的接口,主要在`os/exec`這個Package中。通過使用封裝好的接口,我們很容易就可以在自己的項目中調用其他進程了。
這一章已經介紹了這么多概念,馬上會有實踐環節,用Go實現多種方式來來創建和運行外部進程。
- 前言
- 致謝
- 概述
- 使用代碼
- 使用Docker
- 進程基礎
- 進程是什么
- Hello World
- PID
- PPID
- 使用PID
- 進程名字
- 進程參數
- 輸入與輸出
- 并發與并行
- 進程越多越好
- 進程狀態
- 退出碼
- 進程資源
- 死鎖
- 活鎖
- POSIX
- Nohup
- 運行進程
- Go編程實例
- 衍生新進程
- 執行外部程序
- 復制進程
- 進程進階
- 文件鎖
- 孤兒進程
- 僵尸進程
- 守護進程
- 進程間通信
- 信號
- Linux系統調用
- 文件描述符
- Epoll
- 共享內存
- Copy On Write
- Cgroups
- Namespaces
- 項目實例Run
- 項目架構
- 代碼實現
- 注意事項
- 創建目錄權限
- 捕獲SIGKILL
- Sendfile系統調用
- 后記
- 參考書籍
- 項目學習
- 再次感謝