int getpriority(int which, int who);返回一组进程的优先级

参数which和who确定返回哪一组进程的优先级

The value which is one of PRIO_PROCESS, PRIO_PGRP, or PRIO_USER,

and who is interpreted relative to which (a process identifier for PRIO_PROCESS, process group identifier for PRIO_PGRP, and auser ID for PRIO_USER).

1、PRIO_PROCESS,一个特定的进程,此时who的取值为进程ID

2、PRIO_PGRP,一个进程组的所有进程,此时who的取值为进程组的ID

3、PRIO_USER,一个用户拥有的所有进程,此时who的取值为实际用户ID

getpriority如果出错返回-1,并且设置errno的值,errno的值可能是:

EINVAL which was not one of PRIO_PROCESS, PRIO_PGRP, or PRIO_USER.。which是一个无效的值

ESRCH No process was located using the which and who values specified.。which和who的组合与现存的所有进程均不匹配

注意:当指定的一组进程有不同优先级时,getpriority将返回其中优先级最低的一个。此外,当getpriority返回-1时,可能发生错误,

也有可能是返回的是指定进程的优先级。区分他的方法是,在调用getpriority前将errno清零。如果返回-1且errno不为零,说明有错误产生。

=============================================

调用nice来设置进程的优先级。

nice系统调用等同于:

int  nice( int  increment)

{  

 int oldprio = getpriority( PRIO_PROCESS,  getpid());

 return setpriority(PRIO_PROCESS, getpid(), oldprio + increment);

}

参数increment数值越大则优先顺序排在越后面, 即表示进程执行会越慢.

只有超级用户才能使用负的increment值, 代表优先顺序排在前面, 进程执行会较快.

#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <stdlib.h> int main()
{
pid_t pid;
int stat_val;
int prio;
int inc = ;
int exit_code; pid = fork();
if ( == pid)
{
exit_code = ; prio = getpriority(PRIO_PROCESS, getpid());
printf("the child's priority is:%d\n", prio); nice( inc );
prio = getpriority(PRIO_PROCESS, getpid());
printf("after nice(%d), the child's priority is:%d\n", inc, prio); printf("child will exit with the exit code:%d\n", exit_code);
exit(exit_code);
}
else if (pid < )
{
exit();
} wait(&stat_val);
if ( WIFEXITED(stat_val) )
{
printf("the child has exited, the exit code is:%d\n", WEXITSTATUS(stat_val));
} return ;
}

改变进程的优先级,nice,getpriority,setpriority的更多相关文章

  1. 进程的优先级 与 CFS 进程调度

    在Linux下改变进程的优先级 作者:曾老师,华清远见嵌入式学院讲师. 作为多任务的操作系统,Linux内核为每个创建的进程分配时间片并根据其优先级进行调度.当进程被创建时,其对应的task_stru ...

  2. EPROCESS 进程/线程优先级 句柄表 GDT LDT 页表 《寒江独钓》内核学习笔记(2)

    在学习笔记(1)中,我们学习了IRP的数据结构的相关知识,接下来我们继续来学习内核中很重要的另一批数据结构: EPROCESS/KPROCESS/PEB.把它们放到一起是因为这三个数据结构及其外延和w ...

  3. 第11讲- Android中进程及其优先级

    第11讲Android中进程及其优先级 进程与线程: 进程:操作系统结构的基础,资源分配的最小单元,一个操作系统包括多个进程: 线程:线程存在于进程当中,是操作系统调试执行的最小单元,一个进程包括多个 ...

  4. mfc 进程的优先级

    知识点:  进程优先级  获取当前进程句柄  优先级设置  优先级变动  优先级获取 一.进程优先级(优先级等级) 简单的说就是进程(线程)的优先级越高,那么就可以分占相对多的CPU时间片. ...

  5. RHCE7 管理II-5管理进程的优先级

    进程的优先级值称为进程的nice值,共有40种不同的取值(用数字-20到19表示) nice值越大,表示进程的优先级越低. 进程的nice值,只允许root用户来设置负的nice:其他用户只允许设置正 ...

  6. Linux中进程的优先级

    Linux採用两种不同的优先级范围,一种是nice值.还有一种是实时优先级. 1.nice值 nice值得范围是-20~19,默认值是0. 越大的nice值意味着更低的优先级.也就是说nice值为-2 ...

  7. android中进程的优先级

    android中进程的优先级

  8. Linux基础进程管理优先级

    一.进程优先级 Linux进程调度及多任务 每个cpu(或者cpu核心)在一个时间点上只能处理一个进程,通过时间片技术,Linux实际能够运行的进程(和线程数)可以超出实际可用的cpu及核心数量.Li ...

  9. Android进程的优先级说明

    引言 Android系统尽可能长时间地保持应用程序进程,但为了新建或者运行更加重要的进程,总是需要清除一些进程来回收内存.为了决定保留或终止哪个进程,根据进程内运行的组件及这些组件的状态,系统把每个进 ...

随机推荐

  1. Android JSON 解析关键代码

    Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成 ...

  2. redhat 7.2更新yum源时踩的坑

    一.update yum .先查看redhat7.2中yum的包版本 [root@localhost jiayimeng]# rpm -qa | grep yum -.el7.noarch -.el7 ...

  3. excel在msdn上的说明文档

    Microsoft.Office.Tools.Excel.Worksheet 对象提供和 Excel 主互操作程序集中的 Microsoft.Office.Interop.Excel.Workshee ...

  4. Excel中的基本概念

    Excel的相关概念工作薄:由若干个工作表组成,一个工作薄就是一个Excel文件.启动Excel或者新建文档时,Excel建立的缺省工作簿文件名为book1,book2,……其扩展名为xls工作薄内工 ...

  5. mysql链接 显示 error: 'Access denied for user 'root'@'localhost' (using password: NO)'

    解决方案 https://stackoverflow.com/questions/2995054/access-denied-for-user-rootlocalhost-using-password ...

  6. 谈谈java中的final关键字

    知识点:final(最终的)关键字修饰类.方法.属性 1.final修饰类:那么这个就无法被继承,如String类.StringBuffer类.System类 2.final修饰方法:被修饰的方法不能 ...

  7. 常用字符与ASCII代码对照表

    常用字符与ASCII代码对照表 为了便于查询,以下列出ASCII码表:第128-255号为扩展字符(不常用) ASCII码 键盘 ASCII 码 键盘 ASCII 码 键盘 ASCII 码 键盘 27 ...

  8. C#学习笔记(七):结构体、数组、冒泡排序和调试

    结构体 结构体不能重写默认无参构造函数 一位数组 using System; using System.Collections.Generic; using System.Linq; using Sy ...

  9. 告诉你什么是javascript的回调函数

    函数也是对象 想弄明白回调函数,首先的清楚地明白函数的规则.在javascript中,函数是比较奇怪的,但它确确实实是对象.确切地说,函数是用Function()构造函数创建的Function对象.F ...

  10. 如何理解并正确使用MySql索引

    原文链接:https://my.oschina.net/feinik/blog/1305784 1.概述 索引是存储引擎用于快速查找记录的一种数据结构,通过合理的使用数据库索引可以大大提高系统的访问性 ...