EXECVP -Funktion in c

EXECVP -Funktion in c

execvp () Funktion gehört zur Exec -Familie. Im heutigen Thema werden wir die Merkmale und die Anwendung der Funktion von execVP () unter Exec -Familie diskutieren.

Die Funktion der Exec -Familie in C -Sprache hilft uns, andere Programme in unserem Programm auszuführen. Um dies aus meinem Programm zu tun.

Anwendung von execvp () Funktion

Wenn wir ein Programmping ausführen möchten, können wir dies über execvp () -Funktion anwenden. Dafür müssen wir Array verwenden. Der für execvp () verwendete Buchstaben 'V' steht für Vector.

Syntax

Die Syntax für execvp () Funktion:

int execvp (const char *Datei, char *const)

Hier ist der erste Parameter ein Dateizeiger, der eine Datei zeigt, die im Programm ausgeführt werden soll.

Der zweite Parameter ist eine Zeigerkonstante, die im Typ Zeichen ist und als Null -Terminator verwendet wird.

Programmierbeispiel 1

Hier werden wir sehen, wie execvp () Funktionen in unserem Programm tatsächlich funktioniert.

#enthalten
#enthalten
#enthalten
#Include // einschließlich dieser Datei für die Linux -Plattform einbeziehen
int main (int argc, char *argv [])

char *ar [10] = "ping", "Google.com ","-c10 ", null; // Deklaration und Initialisierung eines Arrays
execvp ("ping", ar);
printf ("Es wird keine Antwort erhalten, wenn execvp () function zuerst \ n" ausgeführt wird "
// Diese Anweisung wird nicht ausgeführt.
Rückkehr 0;

Ausgang

Erläuterung
In diesem Programm -Beispiel, wenn wir das „Google“ pingen wollen.com ”Mit Hilfe von execvp () in der Linux -Plattform müssen wir eine Header -Datei namens Unistd einbeziehen.h in unserem Programm.

Um die Funktion execvp () auszuführen, müssen wir ein Array (tatsächlich Array von String) mit dem Namen AR [] deklarieren und einige Werte wie „Ping“ initialisiert haben, Google.com ”und null.

Wenn wir nun versuchen werden, das Argument -Array in der Klammung von execvp () zu übergeben, werden wir feststellen, dass sie das Google ping.com als Ausgabe.

Programmierbeispiel 2

Hier zeigen wir eine weitere Anwendung von execvp () Funktionen.

#Include // einschließlich dieser Datei für die Linux -Plattform einbeziehen
#enthalten
#enthalten
#enthalten
int main ()

char *cmd = "cd";
char *arr_ls [] = "cd", "/root/nichts", null; // Deklaration und Initialisierung eines Arrays
errno = 0;
int id = execvp (cmd, arr_ls);
if (id == -1)

printf ("\ nhere ist die von execvp:%d \ n", errno) zurückgegebene Fehlernummer;
if (errno == 2)
printf ("!!Keine solche Datei oder Verzeichnis!!\N");
anders
Perror ("execvp");

printf ("Wenn execVP den Erfolg zurückgibt, werden wir diese Zeile nicht sehen, sonst werden wir diese Zeile sehen. \N " ) ;
Rückkehr 0;

Ausgang

Erläuterung
In diesem Programm -Beispiel werden wir feststellen, ob die Funktion execvp () den falschen Wert zurückgibt. Wenn execvp () Funktion den falschen Wert zurückgibt, druckte sie den Wert von “ausErrorno ” Welches ist 2 und drucken Sie die Nachricht, dass "Keine solche Datei oder Verzeichnis".

Wenn execvp () Funktion den tatsächlichen Wert zurückgibt, wird eine Anweisung nach EXECVP nicht ausgeführt. Wie wir aus den Eigenschaften der Funktion execvp () wissen, wird keine Zeile ausgeführt, wenn die Funktion execvp () die Kontrolle über das Programm übernimmt.

Programmierbeispiel 3

In diesem Programmierbeispiel sehen wir die wichtige Anwendung der Funktion execVP () im Zusammenhang mit der Fork () oder dem Prozess.

#enthalten
#enthalten
int main ()

char *cmd = "ls";
char *arg_ls [] = "ls", "-l", null;
printf ("Beispiel für die Ausführung einer Anweisung vor execvp () wird auf \ n") aufgerufen;
printf ("Wir führen einen weiteren Prozess ein, der eine Gabel \ n" angibt);
if (fork () == 0) // Kinderprozess wird eingeführt, das von "LS-L" gesteuert wird

int sts_cd = execvp (cmd, arg_ls);
printf ("Diese Anweisung wird ausgeführt, was bedeutet, dass ein Problem mit dem Befehl \ n" ausgeführt wird);
if (sts_cd == -1)

printf ("execVP -Fehler! \N" ) ;
Rückkehr 1;


sonst // übergeordnetes Programm hier laufen

printf ("Diese Anweisung wird ausgeführt, die zurück zum Hauptprogramm \ n");

Rückkehr 0;

Ausgang

Erläuterung
Wie alle Funktionen der EXEC -Familie in C kann die Funktion execvp () andere Programme in unserem Programm ausführen.

In diesem Programm -Beispiel deklarieren wir ein Charakter -Array oder einen String -Namen arg_ls []. In dieser Zeichenfolge initialisieren wir auch einige Werte & Null. Dann nennen wir einen anderen Prozess namens fork ().

Hier gibt execvp () Funktion den wahren Wert zurück. Die Funktion fork () kann also ihre Aktion erfolgreich ausführen. Wenn nicht, wird es zum Hauptprogramm gehen.

Programmierbeispiel 4

Hier sehen wir eine weitere Funktion der Funktion execvp ().

#enthalten
#enthalten
int main ()

char *cmd = "cd";
char *arg_ls [] = "cd", "/root/bam", null;
printf ("Beispiel für die Ausführung einer Anweisung vor execvp () wird auf \ n") aufgerufen;
printf ("Wir führen einen weiteren Prozess ein, der eine Gabel \ n" angibt);
if (fork () == 0) // Kinderprozess wird eingeführt, das von "LS-L" gesteuert wird

int sts_cd = execvp (cmd, arg_ls);
printf ("Diese Anweisung wird ausgeführt, was bedeutet, dass ein Problem mit dem Befehl \ n" ausgeführt wird);
if (sts_cd == -1)

printf ("execVP -Fehler! \N" ) ;
Rückkehr 1;


sonst // übergeordnetes Programm hier laufen

printf ("Diese Anweisung wird ausgeführt, die zurück zum Hauptprogramm \ n");

Rückkehr 0;

Ausgang

Erläuterung
Das obige Programmierbeispiel ist die modifizierte Version des Programmierbeispiels 3. Hier werden wir sehen, ob die Funktion fork () '0' zurückgibt. Dann führt der untergeordnete Prozess ihren Code aus und wird von gesteuert von LS- “L Befehl. Der Wert, der execvp () zurückgibt STS_CD. Wenn STS_CD Wird den Wert -1 sehen, dann werden wir verstehen, dass es sich um einen Fehler der Funktion execvp () handelt. Andernfalls übernimmt diese Funktion die Kontrolle über den Rest des Programms.

Abschluss

Aus der obigen Diskussion über die Implementierung von execVP () in der Exec -Familie sind wir zu dem Schluss gekommen, dass es ein Prozessbild durch ein neues Bild in unserem RAM (Random Access Memory) ersetzt, um den neuen Prozess auszuführen. Tatsächlich hilft diese Funktion unserem Betriebssystem, alle Prozesse zu verwalten, die vom Prozessor mit weniger Zeit ausgeführt werden können.