分类:
2008-07-14 17:59:20
设置进程属性主要是修改进程PCB中的进程属性:
(1)nice()
功能:用来改变进程的执行优先级,其参数顺序越大优先级越低。只有超级用户才能使用负的优先级。
定义函数:int nice(int inc)
返回值:执行成功返回0,否则返回-1,失败原因在errno中。
头文件:#include
(2)setpgid()
功能:setpgid()将pid所指定的进程的组进程设置为pgid指定的组识别码,
若pid为0,则设置当前进程的组进程识别码,
若pgid为0,则会以目前进程的进程识别码来取代。
定义函数:int setpgid(pid_t pid,pid_t pgid)
返回值:执行成功返回组识别码,否则返回-1,失败原因在errno中。
头文件:#include
(3)setpgrp()
功能:用来将目前进程的组进程识别码设置为目前进程的进程识别码,等价于setpgid(0,0)
定义函数:int setpgrp(void)
返回值:执行成功返回组识别码,否则返回-1,失败原因在errno中。
头文件:#include
(4)setpriority()
功能:用来设置进程,进程组和用户的进程执行优先权。
定义函数:int setpriority(int which,int who,int prio)
参数含义:
which:
PRIO_PROCESS who为进程的识别码
PRIO_PGRP who为进程的组识别码
PRIO_USER who为用户识别码
返回值:执行成功返回0,否则返回-1,失败原因在errno中
头文件:#include
例子:
[keven@localhost systemCall]$ cat set_process_information.c
#include
#include
#include
int main(/*int argc,char **argv*/)
{
printf("This process's priotity is:%d",getpriority(PRIO_PROCESS,getpid()));
nice(10);
printf("\nafter nice(10),This process's priority is:%d",getpriority(PRIO_PROCESS,getpid()));
printf("\nThis process's gid is:%d",getpgid(getpid()));
printf("\nThis process's current priority is:%d",getpriority(PRIO_PROCESS,getpid()));
setpriority(PRIO_PROCESS,getpid(),11);
printf("\nthe modify process priority is %d\n",getpriority(PRIO_PROCESS,getpid()));
return 0;
}
[keven@localhost systemCall]$ ./set_process_information
This process's priotity is:0
after nice(10),This process's priority is:10
This process's gid is:6201
This process's current priority is:10
the modify process priority is 11
[keven@localhost systemCall]$