Chinaunix首页 | 论坛 | 博客
  • 博客访问: 213313
  • 博文数量: 27
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-14 17:06
文章分类

全部博文(27)

文章存档

2011年(1)

2009年(5)

2008年(21)

我的朋友

分类:

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]$

阅读(2258) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~