(一)父进程通过调用fork()函数创建子进程
(1)父子进程相同点:所属的环境变量、进程组ID和会话ID、当前工作路径、打开的文件、信号响应函数、整个内存空间。
(2)不同点:进程号PID、子进程不会进程父进程的:记录锁、挂起的信号;父子进程是并发进行的、父子进程是相互独立的
(二)子进程执行对于的功能:exec函数族
(1)子进程创建出来是为了执行一些预备好的ELF文件或者脚本。调用exec函数族可以调用对于的ELF文件或者脚本。
(2)子进程退出状态函数exit()/_exit(),父进程阻塞等待子进程退出wait()/waitpid()
父进获取到子进程的退出状态后可以用相关的宏定义去判断子进程为何退出。
(3)exit()/_exit()区别:前者会清空缓存区数据在执行退出函数
后者则直接退出。
(4)wait()/waitpid()的区别:前者只能获取到最先退出的子进程的退出状态返回值。
后者可以指定要获取退出状态值的子进程的PID号,并且可以设置为非阻塞等待。可以报告当前任意一个处于暂停态且从未报告的子进程状态或任意一个从暂停态出来且从未报告过得子进程状态。