Skip to content
Home » Fork, exec, wait und exit system call erklärt in Linux | 11 Quick answer

Fork, exec, wait und exit system call erklärt in Linux | 11 Quick answer

forcella.c

Schauen Sie sich die Themenartikel Fork, exec, wait und exit system call erklärt in Linux in der Kategorie an: Wiki bereitgestellt von der Website ar.taphoamini.

See also  So übertragen Sie Fotos vom iPhone auf einen Windows-Computer ohne iTunes | 9 Detailed answer

Weitere Informationen zu diesem Thema Fork, exec, wait und exit system call erklärt in Linux finden Sie in den folgenden Artikeln: Wenn Sie einen Beitrag haben, kommentieren Sie ihn unter dem Artikel oder sehen Sie sich andere Artikel zum Thema Fork, exec, wait und exit system call erklärt in Linux im Abschnitt „Verwandte Artikel an.

forcella.c

See also  Wie man Ubuntu herunterfährt | 15 Most correct answer
See also  Holen Sie sich das neueste kostenlose Vortex Cloud Gaming-Konto [2022] | 15 Most correct answer

Eine Reihe von Anweisungen und Daten, die mehrmals oder gleichzeitig ausgeführt werden können, wird als Programm bezeichnet. Und der Prozess besteht darin, solche Programme zu implementieren. Diese Prozesse können also viele Programme ausführen. Im selben Prozess kann das Betriebssystem mehrere Programme laden. Wiederverwendbare Prozesszustände wie aktuelles Verzeichnis, Berechtigungen, Dateimanager usw. von neuen Programmen geerbt. Solche Dinge passieren auf der gleichen Ebene wie Systemaufrufe wie fork(), exec(), wait() und exit().

In diesem Artikel werfen wir einen genaueren Blick auf die Linux-Systemaufrufe fork(), exec(), wait() und exit() mit Beispielen und Anwendungsfällen.

Villa (Riniert)

Das Fork()-System ist eines der einzigartigsten und nützlichsten für Linux/Unix-Systeme. Sie verwenden Prozesse, um Prozesse zu erstellen, die ihre eigenen Kopien sind. Mit solchen Systemaufrufen kann das Prozesskind die Hauptprozesse erstellen. Bis der Kinderprozess beendet ist, stoppt der Erziehungsprozess.

Hier sind einige wichtige Punkte in der Villa ().

  • Der Elternprozess erhält eine Nicht-Null-ID für den Tochterprozess.
  • Das Kind gibt Null zurück.
  • Wenn beim Erstellen des untergeordneten Elements ein System- oder Hardwarefehler auftritt, wird -1 an die Verzweigung () zurückgegeben.
  • Die eindeutige Prozess-ID des untergeordneten Prozesses stimmt nicht mit der ID einer vorhandenen Prozessgruppe überein.

Um mehr über die Funktion fork() zu erfahren, nehmen wir ein Beispiel, das das Konzept von fork() erklärt.

$ sudo vim fork.c

Hier ist der Copy/Paste-Code:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>

int main(int argc, char **argv)

pid_t pid;
pid = fork();
if(pid==0)

printf("It is the child process and pid is %dn",getpid());
exit(0);

else if(pid > 0)

printf("It is the parent process and pid is %dn",getpid());

else

printf("Error while forkingn");
exit(EXIT_FAILURE);

return 0;

Abflüge:

$make fork

das Programm erstellen

Wenn Sie das Skript ausführen, erhalten Sie das im folgenden Screenshot gezeigte Ergebnis.

$ ./fork

führen Sie das Programm aus

Tu es ()

Exec() ist ein Systemaufruf, der ausgeführt wird, indem das aktuelle Prozessabbild durch ein neues Prozessabbild ersetzt wird. Der ursprüngliche Prozess bleibt jedoch ein neuer Prozess, aber der neue Prozess ersetzt die Kopfdaten, die akkumulierten Daten und so weiter. Das Programm beginnt am Einstiegspunkt, indem es das Programm in den aktuellen Prozessraum lädt.

Nehmen Sie für eine weitere Erläuterung ein Beispiel wie folgt.

$ sudo vim exec.c

Exec-Codebeispiel

Und hier ist der Code:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>

main(void) 
  pid_t pid = 0;
  int status;
  pid = fork();

if (pid == 0) 
  printf("I am the child.");
  execl("/bin/ls", "ls", "-l", "/home/ubuntu/", (char *) 0);
  perror("In exec(): ");


if (pid > 0) 
  printf("I am the parent, and the child is %d.n", pid);
  pid = wait(&status);
  printf("End of process %d: ", pid);

  if (WIFEXITED(status)) 
    printf("The process ended with exit(%d).n", WEXITSTATUS(status));
  

  if (WIFSIGNALED(status)) 
    printf("The process ended with kill -%d.n", WTERMSIG(status));
  


if (pid < 0) 
  perror("In fork():");


exit(0);

Abflüge:

$ make exec

Beispiel für den Befehl make exec

Wenn Sie das Skript ausführen, erhalten Sie das im folgenden Screenshot gezeigte Ergebnis.

$ ./exec

Führen Sie den exec-Beispielbefehl aus

Warten ()

Wie bei einem Fork werden Tochterprozesse erstellt und ausgeführt, aber der Elternprozess hält an, bis der Tochterprozess abgeschlossen ist. In diesem Fall wird das Anklopfen des Systems () automatisch aktiviert, da der Hauptprozess stoppt. Wenn der untergeordnete Prozess die Implementierung abschließt, übernimmt der Hauptprozess wieder die Kontrolle.

Um mehr über das Warten zu erfahren, nehmen Sie ein Beispiel für einen wartenden Systemanruf (Warten).

$ sudo vim wait.c

Systemanruf wartet

Und hier ist ein Beispielcode:

#include<stdio.h> // printf()
#include<stdlib.h> // exit()
#include<sys/types.h> // pid_t
#include<sys/wait.h> // wait()
#include<unistd.h> // fork

int main(int argc, char **argv)


pid_t pid;
pid = fork();

if(pid==0)


printf("It is the child process and pid is %dn",getpid());

int i=0;
for(i=0;i<8;i++)

printf("%dn",i);


exit(0);


else if(pid > 0)


printf("It is the parent process and pid is %dn",getpid());

int status;
wait(&status);
printf("Child is reapedn");


else


printf("Error in forking..n");
exit(EXIT_FAILURE);



return 0;

Abflüge:

$ make wait

Beispielcode generieren

Wenn Sie das Skript ausführen, erhalten Sie das im folgenden Screenshot gezeigte Ergebnis.

$ ./wait

Führen Sie das Codebeispiel Wait for system call aus

Ausgang ()

Die Funktion Output() ist eine Funktion oder ein Systemaufruf zum Beenden eines Prozesses. Dieser systematische Aufruf bestimmt die zu unterbrechende Thread-Ausführung, insbesondere in einer Multithread-Umgebung. Der Status des Prozesses wird dann als Referenz festgehalten.

Nachdem Sie den Systemaufruf-Exit verwendet haben, verlassen alle im Prozess verwendeten Ressourcen das Betriebssystem und beenden dann den Prozess. Das exit()-System entspricht einem ausgehenden ()-Anruf.

Zusammenfassung

#include <unistd.h>
void _exit(int status);
#include <stdlib.h>
void _Exit(int status);

Die Verwendung der Funktion output() kann aus den obigen Beispielen von fork() und wait() ersehen werden. Die Verwendung des Systemaufrufs output() markiert das Ende des Vorgangs.

Fazit

In diesem Artikel haben wir anhand einiger Beispiele Systemaufrufe unter Verwendung von fork(), exec(), wait() und exit() im Detail untersucht. Versuchen Sie für weitere Details, Programme mit diesen Systemaufrufen auszuführen, und sehen Sie sich das Ergebnis an. Vielen Dank!

Einige Bilder zum Thema Fork, exec, wait und exit system call erklärt in Linux

Fork, exec, wait und exit system call erklärt in Linux
Fork, exec, wait und exit system call erklärt in Linux

Einige verwandte Schlüsselwörter, nach denen die Leute zum Thema suchen Fork, exec, wait und exit system call erklärt in Linux

#Fork #exec #wait #und #exit #system #call #erklärt #Linux

Weitere Informationen zu Schlüsselwörtern Fork, exec, wait und exit system call erklärt in Linux auf Bing anzeigen

Die Anzeige von Artikeln zum Thema Fork, exec, wait und exit system call erklärt in Linux ist beendet. Wenn Sie die Informationen in diesem Artikel nützlich finden, teilen Sie sie bitte. vielen Dank.

Leave a Reply

Your email address will not be published. Required fields are marked *