进程

在操作系统中引入进程的概念,是为了使多个程序并发执行,用以改善资源利用率,提高系统吞吐量。
运行中的程序在系统中的映像就是进程。
fork()需要引用头文件<sys/types.h>和<unistd.h>,该函数返回值类型为pid_t,表示一个非负整数。若程序运行在父进程中,函数返回子进程的进程号,若程序运行在子进程中,函数返回0。子进程创建失败会返回-1。
在父进程中调用fork函数,在fork函数中开始的代码中首先创建一个子进程空间,获得一个进程ID,然后逐步将数据段以及堆栈都拷贝过去,因为子进程的数据段以及堆栈都和父进程一样,而且创建完成后就会和父进程共享代码段,共同执行代码,所以fork创建完子进程后面的代码在子进程中也会执行,并且堆栈中也有fork函数等待返回,这样就可以在fork下面的代码中进行实现返回值了
父进程与子进程的返回顺序并不是固定的,fork()函数是系统调用函数,因此取决于系统中其他进程的运行情况和内核的调度算法。

--
vfork()也是系统调用函数,区别在于vfork()创建子进程时不会复制父进程的所有资源,父子进程共享地址空间。在子进程中对虚拟内存空间中变量的修改,实际上是在修改父进程虚拟空间中的值。
posted @ 2013-11-22 17:49  ops  阅读(169)  评论(0编辑  收藏  举报