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

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

进程状态及转换

[cpp] view plain copy print?
  1. #define TASK_RUNNING 0 //运行状态
  2. #define TASK_INTERRUPTIBLE 1 //等待状态(可被中断)
  3. #define TASK_UNINTERRUPTIBLE 2  //等待状态(不可被中断)
  4. #define TASK_STOPPED 4  //停止状态
  5. #define TASK_ZOMBIE 8  //睡眠状态
  6. #define TASK_DEAD 16  //僵死状态

进程的基本操作,六大类:

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

(2)getppid()
功能:用来获取目前进程的父进程标识。
定义函数:pid_t getppid(void)
返回值:返回当前进程的父进程识别号。
头文件:#include <unistd.h>

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

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

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

简单实例:

[keven@localhost systemCall]$ cat -n get_process_information.c

[cpp] view plain copy print?
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/resource.h>
  4. int main(/*int argc,char **argv*/)
  5. {
  6. printf("This process's pid is:%d",getpid());
  7. printf("/nThis process's farther pid is:%d",getppid());
  8. printf("/nThis process's group pid is:%d",getpgid(getpid()));
  9. printf("/nThis process's group pid is:%d",getpgrp());
  10. printf("/nThis process's priority is:%d/n",getpriority(PRIO_PROCESS,getpid()));
  11. return 0;
  12. }

[keven@localhost systemCall]$ ./get_process_information
This process's pid is:6172
This process's farther pid is:5681
This process's group pid is:6172
This process's group pid is:6172
This process's priority is:0
[keven@localhost systemCall]$

linux获取进程信息函数相关推荐

  1. linux用函数输出进程信息,Linux进程的管理 获取进程信息函数

    进程又称任务,是一个动态的使用系统资源.处于活动状态的应用程序. 进程的管理由进程控制块PCB.进程调度.中断管理.任务队列等组成,它是linux文件系统.存储管理.设备管理和驱动程序的基础. 进程控 ...

  2. Linux 如何取进程运行时间,linux -- 获取进程执行时间

    获取进程执行时间 一.时间概念 在linux下进行编程时,可能会涉及度量进程的执行时间.linux下进程的时间值分三种: 时钟时间(real time):指进程从开始执行到结束,实际执行的时间. 用户 ...

  3. linux 进程的执行时间,Linux 获取进程执行时间

    Linux 获取进程执行时间 1 前言 测试一个程序的执行时间, 时间包括用户 CPU 时间系统 CPU 时间时钟时间之前获取之前时间都是在程序的 main 函数用 time 函数实现, 这个只能粗略 ...

  4. linux获取进程io,linux查看哪个进程占用磁盘IO

    [python实现设计模式]-4.观察者模式-吃食啦! 观察者模式是一个非常重要的设计模式. 我们先从一个故事引入. 工作日的每天5点左右,大燕同学都会给大家订饭. 然后7点左右,饭来了. 于是燕哥大 ...

  5. linux c 通过 pid 获取 进程相关信息 cmdline

    linux系统命令ps和top都是通过读取/proc/$PID 目录下的信息获取进程的相关信息, 它遍历/proc目录下的首字符为数字的目录,获取系统进程的信息. 我们经常会把pid写到/var/ru ...

  6. linux c语言中如何通过进程名获取进程PID(awk命令行指令)popen、pclose

    文章目录 不唯一匹配(包含字符的全都匹配上)(而且进程名最多为15个字符?)(前15个字符?) 方法1:嵌到程序里,通过命令行附带要查找的进程名称(交叉编译在arm摄像头里运行) 方法2:通过搜素/p ...

  7. Linux3种进程,linux内核获取进程的全路径3种方法

    本文档的CopyRight归jonathan所有,可自由转载,转载时请保持文档的完整性. /*----------------------------------------------------- ...

  8. linux c 获取进程p id,详解Linux获取线程的PID(TID、LWP)的几种方式

    在 Linux C/C++ 中通常是通过 pthread 库进行线程级别的操作. 在 pthread 库中有函数: pthread_t pthread_self(void); 它返回一个 pthrea ...

  9. Linux——孤儿进程|进程的优先级 用top命令去修改优先级 其他概念 环境变量 PATH 获取环境变量

    目录 孤儿进程 进程的优先级 用top命令去修改优先级 其他概念 环境变量 PATH 获取环境变量 习题 孤儿进程 父进程如果提前退出,那么子进程后退出,进入Z之后,那该如何处理呢? 父进程先退出,子 ...

最新文章

  1. maven编译时出现读取XXX时出错invalid LOC header (bad signature)
  2. IntelliJ IDEA 2020.1 EAP2 发布:新增禅模式和 LightEdit 模式
  3. 基于用户的协同过滤和皮尔逊相关系数
  4. 在非activity类调用startActivityForResult
  5. Linux设备驱动之mmap设备操作
  6. python操作界面_Python使用PyQt5的Designer工具创建UI界面
  7. fetch oracle 12c下载,十二、Oracle Fetch子句
  8. AcWing 4241. 货物运输
  9. centos7下yum安装mysql_CentOS7下使用YUM安装MySQL5.6-Go语言中文社区
  10. IPHONE手机知识大全(下)
  11. c语言有向网络介数,SNA社交网络算法
  12. MODBUS转EtherNet/IP网关连接罗克韦尔(AB)PLC与英威腾变频器配置案例
  13. VR游戏与传统游戏开发区别 和 Unite 2016关于VR/AR的消息
  14. 仓库盘点的四大方法和盘点流程
  15. VS2017生成可执行程序,执行提示“不是有效的win32应用程序”
  16. 程序员相亲大曝光 女方:做底层架构,什么时候升嘞!emmmm
  17. html5网页中的表格教程,javascript程序设计_达内javascript教程-达内web前端培训
  18. 类似于计算机的文件管理器,XYplorer 21比电脑自带的文件管理器还好用的工具
  19. 开源项目推荐:物联网消息引擎EMQ X/大数据平台TDengine/可视化平台Grafana/dgiot
  20. 载入pytorch的预训练模型时遇到_pickle.UnpicklingError: unpickling stack underflow

热门文章

  1. 智能实验室服务器,阿里巴巴机器智能实验室线下智能团队三年工作总结
  2. aop阻止方法运行_新型AOP高级氧化高浓度COD废水处理系统介绍
  3. 右边菜单_AI基础教程65:使用文字菜单编辑文字(七)查找字体
  4. 一文细数Vision transformer家族成员
  5. scala中class与object区别.
  6. 原生js实现类似jq的trigger
  7. HTMLCSSJavaScript个人入门自学笔记
  8. java 指针 地址压缩_JVM优化之压缩普通对象指针(CompressedOops)
  9. 骗子收录网站源码PHP搭建
  10. activexobject mysql_ActiveXObject函数详解(转)