[Linux] Befehlszeilenparameter und Prozesspriorität
Artikelverzeichnis
Befehlszeilenparameter
Das Konzept der Befehlszeilenparameter
Befehlszeilenparameter beziehen sich auf Parameter, die beim Ausführen eines Programms in der Befehlszeile eingegeben werden.
Befehlsfunktionsparameter empfangen
Die Hauptfunktion in der C-Sprache verfügt über zwei Parameter zum Empfangen von Befehlszeilenparametern, nämlich argc und argv. Auch wenn die Parameter der Hauptfunktion nicht explizit angegeben werden, fügt der Compiler die Parameter während der Kompilierung automatisch hinzu und empfängt sie, dies ist jedoch nicht der Fall explizit angegeben. Parameter kann nicht verwendet werden:
int main(int argc, char *argv[]);
Wenn Sie das Programm ausführen, müssen Sie Parameter in der Befehlszeile eingeben. Die Parameter sind im Wesentlichen eine Zeichenfolge. Sie werden durch Leerzeichen getrennt, bevor sie an die Hauptfunktion übergeben werden, und dann separat übergeben. Der argc-Parameter zeichnet die Anzahl der übergebenen Parameter auf und der argv-Parameter zeichnet die Adresse jedes Parameters auf:
Codeüberprüfung schreiben
Schreiben Sie den folgenden Code, um zu überprüfen, ob die Hauptfunktion Befehlszeilenparameter akzeptiert:
#include <stdio.h>
int main(int argc, char *argv[])
{
int i = 0;
for (i = 0; i < argc; i++)
{
printf("argv[%d]->%s\n", i, argv[i]);
}
return 0;
}
Test nach erfolgreicher Kompilierung:
Ergänzung: Gerade weil die Hauptfunktion Befehlszeilenparameter empfangen kann, wird die Funktion des Hinzufügens von Optionen bei Verwendung von Linux-Anweisungen realisiert.
Prozesspriorität
Das Konzept der Prozesspriorität
Die Priorität eines Prozesses bezieht sich auf die Reihenfolge, in der CPU-Ressourcen zugewiesen werden. Prozesse mit höherer Priorität haben vorrangige Ausführungsrechte.
Der Grund für die Entstehung der Prozesspriorität: Es gibt viele Systemprozesse, aber nur eine geringe Menge an CPU-Ressourcen oder sogar eine, sodass ein Wettbewerb zwischen den Prozessen besteht. Um Aufgaben effizient zu erledigen und vernünftiger um zugehörige Ressourcen zu konkurrieren, wird Priorität eingeräumt.
PRI und NI
Geben Sie die Parameter ein, um den Systemprozess unter dem Linux-System anzuzeigen ps -l
:
Unter den vielen Daten sind PRI und NI die beiden prioritätsbezogenen Parameter.
-
PRI: stellt die Priorität dar, mit der dieser Prozess ausgeführt werden kann. Je kleiner der Wert, desto früher wird er ausgeführt.
-
NI: stellt den netten Wert dieses Prozesses dar, der den geänderten Wert der Priorität darstellt, mit der der Prozess ausgeführt werden kann.
PRI = anfänglicher Prioritätswert + netter Wert.
Der Bereich des netten Werts liegt bei [-20,19). Wenn die Priorität eines bestimmten Prozesses zu hoch oder zu niedrig ist, kann dies dazu führen, dass andere Prozesse nicht geplant werden können oder er selbst nicht geplant werden kann, daher hat der nette Wert einen Reichweite.
Verwenden Sie den Befehl top, um den netten Wert zu ändern
Schreiben Sie den folgenden Code, um die nette Wertänderung zu testen:
#include <stdio.h>
#include <unistd.h>
int main()
{
while(1)
{
printf(".");
fflush(stdout);
sleep(1);
}
return 0;
}
Nach erfolgreicher Kompilierung ausführen, zwei zusätzliche Terminals öffnen, top
den Befehl in eines und ps -al
den Befehl in das andere eingeben:
Drücken Sie im oberen Prozess r:
Geben Sie im oberen Prozess die Prozess-ID ein, die in „nice“ geändert werden soll:
Geben Sie den netten Wert ein, der geändert werden soll:
Verwenden Sie ps -al
den Befehl, um Folgendes anzuzeigen:
Da der Anfangswert 80 und der nette Wert 10 beträgt, beträgt der endgültige PRI 90.