Azad, du kannst den Nettowert NICHT reduzieren. Sie haben sich einfach dafür entschieden, das Ergebnis Ihrer Arbeit nicht zu überprüfen. Überprüfen Sie den Inhalt von r, nachdem Sie versuchen, ein negatives Inkrement anzuwenden. Es wird -1 sein, was bedeutet, dass Ihr Versuch fehlgeschlagen ist.
Warum kann ich die Priorität des Prozesses durch Verwendung der Funktion nice () mit einer typischen Benutzerberechtigung (außer ROOT) in Linux verringern?
Wie ich es verstehe, kann jeder Benutzer in Linux die Priorität jedes Prozesses ändern, indem er die Befehle nice und renice verwendet. Ich weiß auch, dass alle Benutzer die Priorität von Prozessen erhöhen können, und der einzige Benutzer, der diese Priorität verringern kann, ist ROOT. Wenn ich dies in einer Terminalumgebung mit diesen Befehlen teste, war alles in Ordnung. Das heißt, wenn ich die Priorität des Prozesses verringern möchte, gibt das System die Textmeldung "Erlaubnis verweigert" aus. Wie ich auch standardmäßig weiß, laufen alle Prozesse mit Priorität 0
. Wenn ich also die Priorität eines Prozesses durch eine negative Zahl einstellen möchte, muss das System einen Fehlertext ausgeben. Wenn ich dieses C-Programm ausführe:
#include<stdio.h> #include<unistd.h> void main() { int n=10,r; r=nice(n); while(1) printf("Test); }
Ich habe erwartet, dass das System einen Fehler anzeigt. Das Programm läuft jedoch problemlos. Obwohl das Programm mit einer typischen Benutzerberechtigung ausgeführt wird. Ich möchte wissen, warum, wenn ich die Priorität des Prozesses mit Hilfe des Befehls renice entsprechend dem erwarteten Fehler des Systems verringern möchte, aber wenn ich die Priorität des Prozesses mithilfe der nice()
Funktion verringern möchte, geben die Programme keinen Fehler aus. Ist dieser Satz All users just can increase the priority of process and the only user that can decrease this priority is ROOT.
richtig?
2 Antworten auf die Frage
#include<stdio.h> #include<unistd.h> #include<sys/resource.h> void main() { int n=10; (void)setpriority(PRIO_PROCESS, 0, n); sleep(60); while(1) printf("Test"); }
Nachdem Sie die Prozesspriorität auf den erforderlichen Pegel eingestellt haben, verzögern Sie um 1 Minuten, damit Sie die geänderte Priorität im Befehl top / ps überprüfen können. Überprüfen Sie diesen Link unter http://linux.die.net/man/2/setpriority
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4