进程与进程资源
进程资源包括 : 内核空间进程资源和用户空间进程资源 。
进程状态 : 就绪,中断等待,不可中断等待,僵死,暂停。
进程基本属性
与进程相关的属性包括进程号(PID) , 父进程号(PPID) , 进程组号(PGID) 。
1 进程号
调用 getpid() 函数获取当前进程的 PID
返回类型是 pid_t ; 如果执行失败则返回 -1 ;
2 父进程号
任何进程都是由另一个进程创建的,该进程被称为被创建进程的父进程,被创建的进程称为子进程。
调用 getppid() 函数获取
3 进程组号
每个进程组都有唯一的进程组号,进程组号可以在用户层修改。
另外可以用 getpgrp() 函数获取当前进程的进程组号。
将某个进程加入到某个进程组的系统调用函数 setgid() ;
第一个参数是欲修改的进程号,第二个参数是新的进程组号。
一个进程只能为自己或者子进程设置进程组号。
4 会话
会话是一个或多个进程组的集合。系统调用函数 getsid() 用来获取某个进程的会话号 SID 。
5 控制终端
调用 tcgetpgrp() 函数获取当前前台进程组的进程组号。
进程管理及控制
创建进程
1 fork() 函数的介绍
Linux下的所有进程都是由进程 init(pid 为1 ) 直接或间接创建的。
此函数没有参数 , 返回值如下 。
- 如果执行成功,在父进程中将返回子进程的pid ,类型为pid_t ;子进程将返回0 。
- 如果执行失败,则在父进程中返回-1,错误原因存储在error中。
ps :
- 父子进程共享代码段,但是分别拥有自己的数据段和堆栈段。
- fork之后的父进程先执行还是子进程先执行是不确定的。由cpu调度算法决定。