Linux进程的管理 获取进程信息函数

 

    进程又称任务,是一个动态的使用系统资源、处于活动状态的应用程序。
    进程的管理由进程控制块PCB、进程调度、中断管理、任务队列等组成,它是linux文件系统、存储管理、设备管理和驱动程序的基础。
进程控制块PCB中包含了进程的所有信息,主要包括进程PID、进程所占有的内存区域、文件描述符和进程环境等信息。
他用task_struct的数据结构表示,存在于include/linux/sch.h

进程状态及转换
#define TASK_RUNNING 0 //运行状态
#define TASK_INTERRUPTIBLE 1 //等待状态(可被中断)
#define TASK_UNINTERRUPTIBLE 2  //等待状态(不可被中断)
#define TASK_STOPPED 4  //停止状态
#define TASK_ZOMBIE 8  //睡眠状态
#define TASK_DEAD 16  //僵死状态

进程的基本操作,六大类:
1.获取进程信息函数:主要通过读取进程控制块PCB中的信息。
(1)getpid()
功能:用来获取目前进程的进程标识。
定义函数:pid_t getpid(void)
返回值:返回当前进程的进程识别号。
头文件:#include <unistd.h>

(2)getpgid()
功能:用来获得参数pid指令进程所属于的组识别号,若参数为0,则返回当前进程的组识别码。
定义函数:pid_t getpgid(pid_t pid)
返回值:执行成功则返回正确的组识别码,若有错则返-1,错误原因存在于errno中。
头文件:#include <unistd.h>

(3)getpgrp()
功能:用来获得目前进程所属于的组识别号,等价于getpgid(0)。
定义函数:pid_t getpgrp(void)
返回值:执行成功则返回正确的组识别码。
头文件:#include <unistd.h>

(4)getpriotity(void)
功能:用来获得进程,进程组和用户的进程执行优先权。
定义函数:int getpriority(int which,int who)
参数含义:
which:
PRIO_PROCESS   who为进程的识别码
PRIO_PGRP     who为进程的组识别码
PRIO_USER     who为用户识别码
返回值:执行成功则返回当前进程的优先级(-20--20),值越小优先级越高。若出错则返-1,原因在errno中。
头文件:#include <sys/time.h>

 

设置进程属性主要是修改进程PCB中的进程属性:

(1)nice()
功能:用来改变进程的执行优先级,其参数顺序越大优先级越低。只有超级用户才能使用负的优先级。
定义函数:int nice(int inc)

返回值:执行成功返回0,否则返回-1,失败原因在errno中。
头文件:#include <unistd.h>

(2)setpgid()
功能:setpgid()将pid所指定的进程的组进程设置为pgid指定的组识别码,
     若pid为0,则设置当前进程的组进程识别码,
     若pgid为0,则会以目前进程的进程识别码来取代

定义函数:int setpgid(pid_t pid,pid_t pgid)
返回值:执行成功返回组识别码,否则返回-1,失败原因在errno中。
头文件:#include <unistd.h>

(3)setpgrp()
功能:用来将目前进程的组进程识别码设置为目前进程的进程识别码,等价于setpgid(0,0)
定义函数:int setpgrp(void)
返回值:执行成功返回组识别码,否则返回-1,失败原因在errno中。
头文件:#include <unistd.h>

(4)setpriority()
功能:用来设置进程,进程组和用户的进程执行优先权。
定义函数:int setpriority(int which,int who,int prio)
参数含义:
which:
PRIO_PROCESS   who为进程的识别码
PRIO_PGRP     who为进程的组识别码
PRIO_USER     who为用户识别码
返回值:执行成功返回0,否则返回-1,失败原因在errno中
头文件:#include <unistd.h>

 

进程的创建仅有一个函数,也是linux下唯一能创建进程的函数:
fork()
功能:用来产生一个新进程,其子进程会复制父进程的数据和堆栈空间,并继承父继承的用户代码、组代码,环境变量、已经打开的文件代码、工作目录和资源限制。但子进程不会继承父继承的文件锁定和未处理的信号。
定义函数:pid_t fork(void)
返回值:若执行成功将在父进程返回新创建的子进程的PID,而在新创建的子进程中返回0,若失败则返回-1,失败原因在errno中。
头文件:#include <unistd.h>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值