我创建了一个流程,并在内部尝试降低其不错的价值:
#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?如何设置一个等于 -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。