Изменить приоритет текущего процесса в C
-
09-06-2019 - |
Вопрос
В Windows я могу сделать:
HANDLE hCurrentProcess = GetCurrentProcess();
SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);
Как я могу сделать то же самое на *nix?
Решение
Пытаться:
#include <sys/time.h>
#include <sys/resource.h>
int main(){
setpriority(PRIO_PROCESS, 0, -20);
}
Обратите внимание: чтобы это работало, вы должны работать от имени суперпользователя.
(для получения дополнительной информации введите «man setpriority» в командной строке.)
Другие советы
Если вы делаете что-то подобное в Unix, вы хотите (от имени пользователя root) выполнить команду chmod и установить бит s.Затем вы можете изменить имя пользователя, приоритет, планирование потоков и т. д.во время выполнения.
Это здорово, пока вы не пишете многопоточное приложение с ошибкой в нем, чтобы вы взяли на себя управление блоком с 48 процессорами, и никто не мог вас выключить, потому что каждый ваш процессор работает на 100%, а для всех потоков установлено значение SHED_FIFO ( работает до завершения) работает от имени пользователя root.
Неа ..Я бы не говорил по опыту....
@ аллен
Можете ли вы понизить приоритет своего процесса, не будучи суперпользователем?
Конечно.Однако имейте в виду, что это улица с односторонним движением.Вы даже не сможете вернуться к тому, с чего начали.И даже довольно небольшое снижение приоритета может иметь поразительно большие последствия для времени работы при значительной нагрузке на систему.