getpriority , setpriority 或 nice 子例程
用途
获取或设置 nice 值。
库
getpriority, setpriority: 标准 C 库 (libc.a)
nice: 标准 C 库 (libc.a)
Berkeley 兼容性库 (libbsd.a)
语法
描述
进程,进程组或用户的 nice 值,如 哪些 和 谁 参数是使用 getpriority 子例程获取并使用 setpriority 子例程设置的。
getpriority 子例程返回与任何指定进程相关的最高优先级 nice 值 (最低数字值)。 setpriority 子例程将所有指定进程的 nice 值设置为指定值。 如果指定的值小于 -20 ,则使用值 -20; 如果大于 20 ,则使用值 20。 只有具有 root 用户权限的进程才能降低 nice 值。
nice 子例程按 Increment 参数的值递增 nice 值。
To provide upward compatibility with older programs, the 好人 interface, originally found in AT&T System V, is supported.
如果需要 BSD 版本的行为,请使用 Berkeley 兼容性库 (libbsd.a) 进行编译。 Increment 参数被视为 -20 到 20 范围内的值的修饰符。
参数
| 项 | 描述 |
|---|---|
| which | 指定 PRIO_PROCESS, PRIO_PGRP或 PRIO_USER中的一个。 |
| 谁 | 相对于 哪些 参数 (分别为进程标识,进程组标识和用户标识) 进行解释。 who 参数的零值表示当前进程,进程组或用户。 |
| Priority | 指定范围在 -20 到 20 之间的值。 负的 nice 值会导致更有利的调度。 |
| 增量 | 指定要添加到当前进程 nice 值的值。 可以指定负值,尽管超过上限或下限的值会被截断。 |
返回值
成功完成时, getpriority 子例程返回范围在 -20 到 20 之间的整数。 返回值为-1也可能表示出错,在这种情况下,将设置errno全局变量。
成功完成时, setpriority 子例程返回 0。 否则,将返回-1并设置全局变量errno以指示错误。
成功完成时, nice 子例程将返回新的 nice 值减去 {NZERO}。 否则,返回值为-1,并设置errno全局变量来指示错误。
错误代码
如果下列其中一项为 true ,那么 getpriority 和 setpriority 子例程将失败:
| 项 | 描述 |
|---|---|
| ESRCH | 未使用指定的 Who 和 Who 参数值找到任何进程。 |
| EINVAL | 无法识别 哪个 参数。 |
除了上面指示的错误外,如果下列其中一个为 true ,那么 setpriority 子例程将失败:
| 项 | 描述 |
|---|---|
| EPERM | 找到了进程,但执行 setpriority 子例程的进程的调用者的有效用户标识和实际用户标识都没有 root 用户权限。 |
| EACCES | 调用 setpriority 会将进程的优先级更改为低于其当前值的值,并且执行调用的进程的有效用户标识没有 root 用户权限。 |
如果以下情况成立,那么 nice 子例程不成功:
| 项 | 描述 |
|---|---|
| EPERM | Increment 参数为负数,调用进程没有相应的特权。 |