### 进程名字
每个进程都一定有进程名字,例如我们运行`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系统调用
- 后记
- 参考书籍
- 项目学习
- 再次感谢