2008-08-27 7 views
11

Unter Windows kann ich tun:ändert Priorität des aktuellen Prozesses in C

HANDLE hCurrentProcess = GetCurrentProcess(); 

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS); 

Wie kann ich die gleiche Sache auf * nichts zu tun?

+0

http://stackoverflow.com/questions/29621/change-own-process-priority-in-c –

+0

Können Sie senken Sie Ihre Priorität des eigenen Prozesses, ohne Superuser zu sein? –

+0

Ja, obwohl Sie es normalerweise nicht wieder erhöhen können. – thelsdj

Antwort

22

Versuchen:

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

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

Beachten Sie, dass Sie als Superuser ausgeführt werden muss, damit dies funktioniert.

(für weitere Informationen, Typ ‚Mann setpriority‘ an einer Eingabeaufforderung.)

1

@ allain

Können Sie Ihre eigene Prozess Priorität senken, ohne Superuser zu sein?

Sicher. Beachten Sie jedoch, dass dies eine Einbahnstraße ist. Sie können nicht einmal dorthin zurückkehren, wo Sie angefangen haben. Und schon geringe Reduzierungen der Priorität können bei hoher Systembelastung erstaunlich große Auswirkungen auf die Laufzeit haben.

4

Wenn du so etwas unter Unix machst, willst du (als root) chmod deine Aufgabe und setze das s Bit. Dann können Sie zur Laufzeit ändern, wer Sie ausführen, welche Priorität Sie haben, Ihre Thread-Planung usw..

Es ist großartig, solange Sie nicht eine massive Multithread-App mit einem Fehler darin schreiben, so dass Sie eine 48 CPU-Box übernehmen und niemand Sie herunterfahren kann, weil Ihre CPU bei 100% mit allen Thread drehen auf SHED_FIFO (läuft bis zum Abschluss) als root ausgeführt.

Nö .. würde ich nicht aus Erfahrung sprechen werden ....

Verwandte Themen