gpt4 book ai didi

c - 降低流程的良好值(value)

转载 作者:行者123 更新时间:2023-12-03 09:53:21 26 4
gpt4 key购买 nike

我创建了一个进程,并在里面试图降低它的 nice 值:

#include    <stdlib.h>
#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>

int main()
{
printf("Modified nice value: \t %d\n", nice(-19)); // Output: -1; if I run with sudo the output is 0
return 0;
}

如果我使用 sudo,为什么输出是 -1 或 0?如何将 nice 值设置为 -19?

如果我尝试增加 nice 值,程序会正常运行。


编辑:对上面的代码感到抱歉;如果我使用 sudo 运行以下代码,则会出现输出 0:

#include    <stdlib.h>
#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>

int main()
{
int nice_value;

nice_value = getpriority(PRIO_PROCESS, 0);
printf("Default nice value: \t %d\n", nice_value); // 0

nice_value = nice(12);
printf("Modified nice value: \t %d\n", nice_value); // 12 OK

printf("Modified nice value: \t %d\n", nice(20)); // 19

printf("Modified nice value: \t %d\n", nice(-19)); // 0 (sudo)
return 0;
}

相反,如果我使用 sudo 运行上面的代码(在编辑之前),输出是 -19。为什么在后一种情况(“编辑情况”)中输出为 0?

如果我注释前三个 printf,输出是 -19。

最佳答案

你得到 0 而不是 -20 因为 nice() 将传递的值添加到调用线程的 nice 值,所以如果你当前的 nice 值为 19 并且你使用 nice( -19) 19 - 19 = 0 而不是如果你使用 nice(-39) 你得到一个 nice 值 -20 但是当然要设置较低的 nice 值你需要 super 用户权限,而不是第一个问题你得到-1 从你调用 nice 因为在错误的情况下(比如非特权进程试图设置一个较低的 nice 值),它返回 -1,当然当你尝试设置一个 -1 nice 值时它也可以返回 -1,因此区分这两种情况测试 errno 变量

关于c - 降低流程的良好值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63244319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com