### 创建进程
本章开始时演示了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系统调用
- 后记
- 参考书籍
- 项目学习
- 再次感谢