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

上一篇 / 下一篇  2008-03-10 11:28:49 / 个人分类:linux应用

+\,~D _[0pQ6dH0  进程又称任务,是一个动态的使用系统资源、处于活动状态的应用程序。LUPA开源社区;?!N},E,m}4I0{
进程的管理由进程控制块PCB、进程调度、中断管理、任务队列等组成,它是linux文件系统、存储管理、设备管理和驱动程序的基础。LUPA开源社区L\\"M8r;Ia,\)t
进程控制块PCB中包含了进程的所有信息,主要包括进程PID、进程所占有的内存区域、文件描述符和进程环境等信息。LUPA开源社区+j5`\'?6e'Y
他用task_struct的数据结构表示,存在于include/linux/sch.h

G_s2}+Ht/r0

k iL"r A+~%CHA"U0进程状态及转换LUPA开源社区9bDYN5\2T&oT
#define TASK_RUNNING 0 //运行状态
]](EAj `~6K:i!~L0#define TASK_INTERRUPTIBLE 1 //等待状态(可被中断)LUPA开源社区^:c2V6qD1t g
#define TASK_UNINTERRUPTIBLE 2  //等待状态(不可被中断)LUPA开源社区2Kr![/zd%dg
#define TASK_STOPPED 4  //停止状态LUPA开源社区*JH|v6u;RE5`_ox
#define TASK_ZOMBIE 8  //睡眠状态
f Lz)O:KW0#define TASK_DEAD 16  //僵死状态
LUPA开源社区6Y RUT1CBk[6B

LUPA开源社区2w B%r/C0J2aA

进程的基本操作,六大类:LUPA开源社区8A9f3eyQb.z/inxg
1.获取进程信息函数:主要通过读取进程控制块PCB中的信息。
,J9o.rGyG7y E0(1)getpid()
cH5?Mda^;L t0功能:用来获取目前进程的进程标识。
s,EyOnv0定义函数:pid_t getpid(void)
:H#P O.o)nAz#Xb0返回值:返回当前进程的进程识别号。
l {ZR$P1QHU'z0头文件:#include <unistd.h>
LUPA开源社区 o.Tx Y,@$V:Y&ol.F

LUPA开源社区SBnP(G1a6Nm

(2)getppid()LUPA开源社区;z.ly,e i'GBe
功能:用来获取目前进程的父进程标识。LUPA开源社区;`g3g2N^,M
定义函数:pid_t getppid(void)
v*xc,e'Y8t v0返回值:返回当前进程的父进程识别号。
%]O"B;R!f*d0头文件:#include <unistd.h>

|kr I*^ iai0 LUPA开源社区$_~IkZ^$PJ

(3)getpgid()LUPA开源社区-?%}0t8NZ ?Lc
功能:用来获得参数pid指令进程所属于的组识别号,若参数为0,则返回当前进程的组识别码。
#vp&EO(l/[0定义函数:pid_t getpgid(pid_t pid)LUPA开源社区4R-F7pcAbC
返回值:执行成功则返回正确的组识别码,若有错则返-1,错误原因存在于errno中。
-w(qG6U:^S1T xs0头文件:#include <unistd.h>

%P+g1Z8k?)C,B0 LUPA开源社区6H:U.Ob;q%iM F

(4)getpgrp()
#r@h`pgB0功能:用来获得目前进程所属于的组识别号,等价于getpgid(0)。
t'i|0Pq;kb0
定义函数:pid_t getpgrp(void)
~1P/j8ZO)zgk0返回值:执行成功则返回正确的组识别码。
V;NCV/W0
头文件:#include <unistd.h>

I)[/XMy"r Q]qU0

4E Yvf iY0(5)getpriotity(void)
3WS]ld9de0功能:用来获得进程,进程组和用户的进程执行优先权。LUPA开源社区O4L9T#}1G4Hl
定义函数:int getpriority(int which,int who)LUPA开源社区W+l diG(a#f'~d
参数含义:
3[ JJn}f [ r0which:LUPA开源社区pF4_8f-Q+DJ
PRIO_PROCESS   who为进程的识别码
+Cv[_,j0PRIO_PGRP     who为进程的组识别码LUPA开源社区+@w,g1t q+|sH-w5F
PRIO_USER     who为用户识别码
|){h^H_x%_0
返回值:执行成功则返回当前进程的优先级(-20--20),值越小优先级越高。若出错则返-1,原因在errno中。LUPA开源社区DD w^}LA@l
头文件:#include <sys/time.h>

*`/U8N p'pD,w1IU|0

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-30  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 938
  • 日志数: 17
  • 图片数: 2
  • 文件数: 1
  • 书签数: 6
  • 建立时间: 2008-03-01
  • 更新时间: 2008-08-18

RSS订阅

Open Toolbar