Два возможных подхода.
1 / Я не думаю, что popen()
является частью стандарта C ++ (это часть POSIX из памяти), но он доступен для всех UNIX, с которыми я работал ( и вы, кажется, нацелились на UNIX, так как ваша команда «./some_command
»).
2 / В случае, если нет popen()
, вы можете использовать system( "./some_command >/tmp/some_command.out" ) ;
, затем использовать обычный Функции ввода / вывода для обработки выходного файла.
Попытка:
#include <sys/time.h>
#include <sys/resource.h>
int main(){
setpriority(PRIO_PROCESS, 0, -20);
}
Обратите внимание, что необходимо работать как суперпользователь за этим для работы.
(для большего количества информации введите 'человека setpriority' при подсказке.)
allain
Можно ли понизить приоритет собственного процесса, не будучи суперпользователем?
Конечно. Знайте, однако, что это - улица с односторонним движением. Вы не можете даже возвратиться туда, где Вы запустили. И даже довольно маленькие сокращения приоритета могут иметь поразительно большие эффекты на время выполнения, когда существует значительная нагрузка на систему.
При выполнении чего-то вроде этого под Unix Ваш хотеть к (как корень) chmod Вы определяете задачу и устанавливаете бит s. Затем можно измениться, кого Вы выполняете как, каков Ваш приоритет, Ваше планирование потоков, и т.д. во время выполнения.
Это является большим, пока Вы не пишете в широком масштабе многопоточное приложение с ошибкой в нем так, чтобы Вы приняли 48 полей CPU, и никто не может завершить работу Вас, потому что Ваш имеют каждый ЦП, вращающийся в 100% со всем набором потока к SHED_FIFO (выполнения к завершению) работающий как корень.
Nah.. Я не говорил бы на основе опыта....