### 進程名字
每個進程都一定有進程名字,例如我們運行`top`,進程名就是“top”,如果是自定義的程序呢?
其實進程名一般都是進程參數的第一個字符串,在Go中可以這樣獲得進程名。
~~~
package main
import (
"fmt"
"os"
)
func main() {
processName := os.Args[0]
fmt.Println(processName)
}
~~~
進程的輸出結果如下。
~~~
root@87096bf68cb2:/go/src# go run process_name.go
/tmp/go-build650749614/command-line-arguments/_obj/exe/process_name
root@87096bf68cb2:/go/src# go build process_name.go
root@87096bf68cb2:/go/src# ./process_name
./process_name
~~~
是否稍稍有些意外,因為`go run`會啟動進程重新編譯、鏈接和運行程序,因此每次運行的進程名都不相同,而編譯出來的程序有明確的名字,所以它的進程的名字都是一樣的。
知道這些以后,我們可以開始接觸接進程的運行參數。
- 前言
- 致謝
- 概述
- 使用代碼
- 使用Docker
- 進程基礎
- 進程是什么
- Hello World
- PID
- PPID
- 使用PID
- 進程名字
- 進程參數
- 輸入與輸出
- 并發與并行
- 進程越多越好
- 進程狀態
- 退出碼
- 進程資源
- 死鎖
- 活鎖
- POSIX
- Nohup
- 運行進程
- Go編程實例
- 衍生新進程
- 執行外部程序
- 復制進程
- 進程進階
- 文件鎖
- 孤兒進程
- 僵尸進程
- 守護進程
- 進程間通信
- 信號
- Linux系統調用
- 文件描述符
- Epoll
- 共享內存
- Copy On Write
- Cgroups
- Namespaces
- 項目實例Run
- 項目架構
- 代碼實現
- 注意事項
- 創建目錄權限
- 捕獲SIGKILL
- Sendfile系統調用
- 后記
- 參考書籍
- 項目學習
- 再次感謝