1.fork()函数
以下是一段非常有趣的代码,代码来源:http://www.cnblogs.com/bastard/archive/2012/08/31/2664896.html
运行代码之后,同时输出了父进程和子进程,而且两个进程的ID号也是不同的
一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,并且系统会给新的进程分配资源
fork()调用的奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
- 在父进程中,fork返回新创建子进程的进程ID
- 在子进程中,fork返回0
- 如果出现错误,fork返回一个负值
fork函数执行完毕后,如果新进程创建成功,则出现两个进程,一个父进程,一个子进程,这两个进程是独立的
我们可以通过pid_t数据类型返回的值来判断当前进程是子进程还是父进程
我的理解:一个父进程经过fork生成一个子进程,这是一个过程;轮到第二个过程,之前的父进程经过fork函数之后生成一个子进程,第一个过程的子进程变成了第二个过程的父进程,经过fork之后也可以生成一个子进程。
2.getpid()函数和getppid()
getpid()
功能:取得进程识别码
返回值:目前进程的ID
getppid()
功能:取得父进程的进程识别码
返回值:目前进程的父进程识别码