Измените приоритет текущего процесса на C

В Windows я могу сделать:

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

Как я могу сделать то же самое на * nix?

Ответ 1

Try:

#include <sys/time.h>
#include <sys/resource.h>

int main(){
    setpriority(PRIO_PROCESS, 0, -20);
}

Обратите внимание, что для этого вы должны работать как суперпользователь.

(для получения дополнительной информации введите "man setpriority" в командной строке.)

Ответ 2

Если вы делаете что-то вроде этого в unix, вы хотите (как root) chmod выполнить задачу и установить бит s. Затем вы можете изменить того, с кем работаете, каков ваш приоритет, планирование потоков и т.д. Во время выполнения.

Это здорово, если вы не пишете многопоточное приложение с ошибкой в ​​нем, так что вы берете блок с процессором 48, и никто не может вас остановить, потому что каждый процессор работает на 100% со всем набором потоков до SHED_FIFO (выполняется до завершения) с правами root.

Нет. Я бы не говорил по опыту...

Ответ 3

@allain

Можете ли вы опустить приоритет своего собственного процесса без суперпользователя?

Конечно. Однако имейте в виду, что это улица с односторонним движением. Вы даже не можете вернуться туда, где вы начали. И даже довольно небольшое сокращение приоритета может иметь поразительно большие эффекты на время работы, когда на систему имеется значительная нагрузка.