Я создал процесс и внутри попытался уменьшить его значение 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;
}
Почему вывод -1 или 0, если я использую sudo? Как я могу установить значение nice равным -19?
Если я попытаюсь увеличить значение nice, программа будет работать правильно.
РЕДАКТИРОВАТЬ: извините за приведенный выше код; вывод 0 происходит, если я запускаю следующий код с помощью sudo:
#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.