本章开始时演示了Hello World程序,其实已经创建了新的进程,通过Bash或者zsh这些Shell很容易创建新的进程,但Shell本身是怎么实现的呢?我们又能不能用Go实现类似Shell的功能呢?
系统调用
原来这一切都是操作系统给我们做好的,然后暴露了使用的API接口,这就是系统调用。Linux或者其他Unix-like系统都提供了fork()
和exec()
等接口,Bash或者我们写的程序都可以通过调用这些接口来操作进程。
Go创建进程
而Go已经封装了与进程相关的接口,主要在os/exec
这个Package中。通过使用封装好的接口,我们很容易就可以在自己的项目中调用其他进程了。
这一章已经介绍了这么多概念,马上会有实践环节,用Go实现多种方式来来创建和运行外部进程。