linux中,一个进程在内存里有三部分数据结构:代码段、数据段、堆栈段。如果系统中运行数个相同的程序,那么他们不能使用相同的数据段和堆栈段。
有两个函数用于创建和修改进程:函数fork()和函数族exec()。fork函数以父进程为蓝本复制一个进程。linux环境下,fork()是以写复制实现的,只有父进程或子进程进行了修改后,才重新生成一份。
fork()函数的特点是执行一次,返回两次。在父进程和子进程中返回不同的值。父进程中返回的是子进程的ID号,子进程中返回0。
exec()族的函数会用新的进程代替原有的进程,系统会从心的进程运行新进程,新进程的PID值会与原进程的PID值相同。