Linux下的进程创建之旅(在linux下创建进程)
本次给大家分享的是Linux下的进程创建之旅。首先,我们来了解一下什么是进程。进程是比程序更高层次的一个东西。它可以用来描述一个正在运行的程序,是操作系统管理资源的基本单位。Linux中的进程可以用系统调用fork()来创建。
要创建一个进程,首先要调用fork()系统调用,它有这样一个原型:
“`cpp
pid_t fork(void);
调用fork()就像是分裂一个细胞,返回值是当前进程的PID。在Linux中,通过使用fork()可以创建一个新的进程。创建的新进程与父进程基本相同,拥有相同的代码,data和像文件描述符,用户ID,用户组ID等等。
调用fork()后,程序会进入该进程内部,并且fork()将分裂出一份进程的内容,在实现中,fork()创建的新进程将获得一份父进程的地址空间的副本。该进程之后可以调用exec()系统调用,来替换掉副本的地址空间,并加载另外的一个executable文件替换原来的程序。
接下来,fork()可以调用wait()系统调用,用来收集子进程的状态。该系统调用有两个原型,一是可以指定收集某个进程状态,另外一个是收集任意子进程状态。
当父进程调用wait()函数之后,两个进程就开始进行交互,此时,子进程处于睡眠状态,会一直等待父进程收集状态。如果子进程结束,父进程就会以wait()函数以及子进程的状态参数来收集和打印子进程的统计信息
最后,Linux的进程创建过程一般由fork()->exec()->wait()组成,通过调用fork()创建新的进程,调用exec()来替换掉原来的程序,调用wait()来收集子进程的状态等等,Linux下的进程创建更加灵活,功能更强大。