日期:2014-05-16  浏览次数:20614 次

LINUX进程创建,书本例子
#include <sys/types.h>/*提供类型pid_t的定义,在PC机上与int类型相同*/
#include <unistd.h>/*提供系统调用的定义*/

main()
{
  pid_t pid;
  /*此时仅有一个进程*/
  printf("PID before fork():%d\n",(int)getpid());
  pid=fork();
  /*此时已经有两个进程在同时运行*/
  if(pid<0)
  printf("error in fork!");
  else if(pid==0)
  printf("I am the child process, my process ID is d%\n",getpid());
  else
  printf("I am the parent process, my process ID is d%\n",getpid());
}

我先是看到这本书对进程的定义“进程是运行中的程序,它除了包含程序中的所有内容外,还包含一些额外的数据”。或者可以这么说“进程代表程序的执行过程,它是一个动态的实体,随着程序中指令的执行而不断地变化”。

所以,我觉得一个运行的程序就是一个进程。哪么,上面的例子是一个程序吗?(抱歉,我现在真的有点晕了,虽然我以前肯定认为它就是一个程序)如果它是一个程序的话,它在运行时就是一个进程,那是不是就是说它也可以在运行过程中创建另外一个进程呢?另外,我不知道它fork出来的那个进程是什么进程?是跟这个程序相同的进程,还是一个空进程(自己创造的概念~~)?还是一个系统进程?



------解决方案--------------------
fork就是用来创建子进程的。

如 进程1 fork 得到 进程2
那么 进程2 是 进程1 的 子进程

如 进程2 再 fork 得到 进程3
那么 进程3 是 进程1 的孙进程

如 进程1 再 fork 进程4
那么 进程2 和 进程4 是兄弟进程。


Process1 -> Process 2 -> Process 3
-> Process 4