内核进程

进程id   名字   说明
 0     swap   用于交换    系统进程
 1     init   用于启动系统  非系统进程      程序文件sbin/init 读配置文件/etc/init.d
 2     pagedaemon  页守护进程  系统进程

进程相关函数的重要说明

1) fork之后,父子进程没有规定谁先执行,依赖于系统调度   
             父子进程相同的文件描述符共享一个文件表项
             父进程的文件锁不会被子进程继承
   vfork只会部分赋值父进程的地址空间,然后父进程会等待子进程至少exec其他程序后才开始执行,
   *********子进程在调用exec或exit之前在父进程的地址空间运行*****************

2)如果子进程的父进程已经结束,那么它们的父进程都会变成init进程,被init领养
      **实现原理是,在父进程终止的时候去遍历进程表,然后找到它的所有子进程并修改
      init在子进程结束的时候会调用wait取得子进程的状态,所以子进程结束后不会变成僵死进程.
3) 僵死进程: 
      子进程结束后,会保留进程id,结束状态等值,并不会马上退出,需要等待父进程使用
      wait来取得值后再结束,如果父进程一直不来取,那么子进程就以僵死进程的状态一直存在.
      ps命令将僵死状态的进程标识为Z
4) 子进程只要结束就向父进程发送SIGCHLD信号,如果父进程不捕获默认是忽略
5) wait 和waitpid
   wait调用:  如果有子进程存在,且都在运行,那么父进程阻塞
              1)当有一个子进程退出的时候,那么wait调用马上返回
              2)收到SIGCHLD信号,那么wait调用马上返回
   waitpid调用:
              1)可以根据参数设置是否阻塞父进程
              2)可以指定某个子进程进行阻塞
              3)可以控制子进程
6) waitid,wait3,wait4
   waitid类似于waitpid

 

   wait3和wait4分别是指有3个参数和4个参数的wait,多的参数表示需要内核返回子进程的资源报告.