Ausführungssystem Anruf in c

Ausführungssystem Anruf in c
Die Exec -Familie hat viele Funktionen in C. Diese C -Funktionen werden im Grunde genommen verwendet, um einen Systembefehl in einem separaten Vorgang auszuführen, das das Hauptprogramm und die Ausgabe druckt.

In diesem Artikel spreche ich über die EXEC -Familie der Funktionen und zeige Ihnen, wie Sie jede dieser Exec -Familienfunktionen in C verwenden können. Also lasst uns anfangen.

C -Systemfunktionen in der EXEC -Familie:

Die Exec -Funktionsfamilien sind im Header definiert Unistd.H. Sie müssen diesen Header im C -Programm verwenden, in dem Sie diese Funktionen verwenden möchten.

Die verfügbaren EXEC -Funktionen zusammen mit ihren Funktionsparametern finden Sie unten:

  • int execl (const char *path, const char *arg,…, null);
  • int execlp (const char *Datei, const char *arg,…, null);
  • int execv (const char *path, char *const argv []);
  • int execvp (const char *Datei, char *const argv []);
  • int execle (const char *path, const char *arg,…, null, char *const envp []);
  • int execve (const char *Datei, char *const argv [], char *const envp []);

Mal sehen, was jede dieser Funktionen tun und wie sie verwendet werden sollen.

execl () Systemfunktion:

In execl () Systemfunktion übernimmt der Pfad der ausführbaren Binärdatei (i.e. /bin/ls) als erstes und zweites Argument. Dann die Argumente (ich.e. -lh, /heim) dass Sie an die ausführbare Datei übergehen möchten, gefolgt von NULL. Dann führt die Systemfunktion execl () den Befehl aus und druckt die Ausgabe aus. Wenn ein Fehler auftritt, gibt execl () -1 zurück. Ansonsten gibt es nichts zurück.

Syntax:

int execl (const char *path, const char *arg,…, null);

Ein Beispiel für die System -Funktion von EXECL () ist unten angegeben:

#enthalten
int main (void)
char *binaryPath = "/bin/ls";
char *arg1 = "-lh";
char *arg2 = "/home";
Execl (BinaryPath, BinaryPath, Arg1, Arg2, NULL);
Rückkehr 0;

Ich habe die gelaufen ls -lh /home Befehl Verwenden von EXECL () -Systemfunktion. Wie Sie sehen können, wird das richtige Ergebnis angezeigt.

execlp () Systemfunktion:

execl () verwendet die nicht WEG Umgebungsvariable. Der vollständige Pfad der ausführbaren Datei muss also mit execl () ausgeführt werden. execlp () verwendet die Pfadumgebungsvariable. Wenn also eine ausführbare Datei oder ein Befehl im Pfad verfügbar ist, ist der Befehl oder der Dateiname ausreichend, um sie auszuführen, der vollständige Pfad ist nicht benötigt.

Syntax:

int execlp (const char *Datei, const char *arg,…, null);

Wir können das Beispiel für execl () mit der Systemfunktion execlp () wie folgt umschreiben:

#enthalten
int main (void)
char *programmname = "ls";
char *arg1 = "-lh";
char *arg2 = "/home";
EXECLP (ProgramName, ProgramName, Arg1, Arg2, NULL);
Rückkehr 0;

Ich habe nur den Befehlsnamen übergeben ls, nicht der volle Weg /bin/ls. Wie Sie sehen können, habe ich die gleiche Ausgabe wie zuvor bekommen.

execv () Systemfunktion:

In der Funktion von execl () werden die Parameter der ausführbaren Datei als verschiedene Argumente an die Funktion übergeben. Mit execV () können Sie alle Parameter in einem von Null gekündigten Array übergeben argv. Das erste Element des Arrays sollte der Pfad der ausführbaren Datei sein. Andernfalls funktioniert die Funktion execv () als execl () Funktion.

Syntax:

int execv (const char *path, char *const argv []);

Wir können das Beispiel für execl () wie folgt umschreiben:

#enthalten
int main (void)
char *binaryPath = "/bin/ls";
char *args [] = binary path, "-lh", "/home", null;
execv (BinaryPath, args);
Rückkehr 0;

Wie Sie sehen können, bekomme ich die richtige Ausgabe.

execvp () Systemfunktion:

Funktioniert genauso wie execv () Systemfunktion. Die Pfadumgebungsvariable wird jedoch verwendet. Der vollständige Pfad der ausführbaren Datei ist also nicht wie in execlp () erforderlich.

Syntax:

int execvp (const char *Datei, char *const argv []);

Wir können das execv () -Abbeispiel wie folgt umschreiben:

#enthalten
int main (void)
char *programmname = "ls";
char *args [] = programmname, "-lh", "/home", null;
execVP (Programmname, Args);
Rückkehr 0;

Wie Sie sehen können, wird die richtige Ausgabe angezeigt.

Execle () Systemfunktion:

Funktioniert genau wie execl (), aber Sie können Ihre eigenen Umgebungsvariablen zusammenstellen. Die Umgebungsvariablen werden als Array übergeben Envp. Das letzte Element der Envp Array sollte null sein. Alle anderen Elemente enthalten die Schlüsselwertpaare als Zeichenfolge.

Syntax:

int execle (const char *path, const char *arg,…, null, char *const envp []);

Ein Beispiel für die Systemfunktion von Execle () ist unten angegeben:

#enthalten
int main (void)
char *binaryPath = "/bin/bash";
char *arg1 = "-c";
char *arg2 = "echo" besuchen Sie $ hostname: $ port aus Ihrem Browser."";
char *const env [] = "hostname = www.LinuxHint.com "," port = 8080 ", null;
Execle (BinaryPath, BinaryPath, arg1, arg2, null, env);
Rückkehr 0;

Ich habe zwei Umgebungsvariablen bestanden Hostname Und HAFEN zur Funktion von execle (). Wie Sie sehen können, kann ich aus der ausführbaren Datei auf sie zugreifen /Bin/Bash.

execve () Systemfunktion:

Genau wie bei execle () können Sie zusammen mit execve () Ihre eigenen Umgebungsvariablen bereitstellen. Sie können auch Argumente als Arrays wie in execv () übergeben.

Syntax:

int execve (const char *Datei, char *const argv [], char *const envp []);

Das Beispiel von Execle () kann wie folgt umgeschrieben werden:

#enthalten
int main (void)
char *binaryPath = "/bin/bash";
char *const args [] = binaryPath, "-c", "echo" besuchen $ hostname: $ port
aus Ihrem Browser."", NULL;
char *const env [] = "hostname = www.LinuxHint.com "," port = 8080 ", null;
execve (binärdPath, args, env);
Rückkehr 0;

Wie Sie sehen können, erhalten wir die gleiche Ausgabe wie im Execle () Beispiel.

So verwenden Sie die Exec -Funktionsfamilie in C für die Systemprogrammierung unter Linux. Danke, dass du diesen Artikel gelesen hast.