Codierung mit Gabel und Exec mit gutem Beispiel in c

Codierung mit Gabel und Exec mit gutem Beispiel in c
Der Titel unseres Artikel enthält zwei verschiedene Funktionen der C -Sprache, die beim Ausführen eines Programms in unserem System auftreten. Leider besteht keine Möglichkeit, mehr als ein Programm gleichzeitig in C. Zu einem bestimmten Zeitpunkt kann nur eine einzige Aufgabe erfolgen, was bedeutet, dass gleichzeitige Programme nicht ausführen können. Es lässt Sie darauf warten, dass ein Prozess abgeschlossen ist, um den anderen auszuführen. Um dieses Problem der Fehlerbehebung zu vermeiden, müssen Sie möglicherweise Ihr Programm auf eine gute Weise entwickeln und ein guter Entwickler sind. Linux fork () wird verwendet, um das Warten zu überwinden und die Parallelität in Ihrem System zu ermöglichen. Es hilft bei der Duplizierung eines neuen Prozesses und schafft eine neue, indem Sie den doppelten Prozess aufrufen. Der neue Prozess ist der Kinderprozess, und der vorherige wird als übergeordneter Prozess bezeichnet.

Während die Funktion von Exec () verwendet wird, um das aktuelle vorhandene Programm mit dem neuen zu ändern. Dieser Ersatz erfolgt durch Änderungen des Inhalts eines Programms oder einer Datei. Die Unähnlichkeit zwischen Fork und Exec besteht also darin, dass Gabel einen neuen Prozess aus dem vorhandenen Prozess erstellt, und Exec wird verwendet, um das vorhandene Programm durch Erstellen eines neuen Programms zu ersetzen.

Voraussetzungen

Um ein C -Programm auf Ihrem Linux -System auszuführen, müssen wir einige Voraussetzungen darauf installieren. Gehen Sie zum Terminal mit der Verknüpfungsmethode Strg+Alt+T. Schreiben Sie nun die folgenden Befehle, um die Mannseiten zu installieren.

$ sudo apt installieren Manpages-dev

Es wird alle entsprechenden Seiten installiert.

Um ein Programm unter Linux auszuführen, müssen Sie einen Code -Compiler installieren. Das wird verwendet, um den Code zu kompilieren und ihn auszuführen. Zu diesem Zweck werden wir GCC -Repositories in unserem System installieren.

$ sudo APT Installieren Sie GCC

Codierung mit Exec in c

Da wir die Mannseiten in Linux installiert haben, werden wir den folgenden Befehl verwenden, um die Beschreibung bezüglich der Exec zu sehen. Die primäre Probensyntax ist wie folgt:

Syntax

Exec (Pathname/Datei, argv);

Hier haben wir die „Unistd.H ”Kopfzeile wie alle Informationen von Familien der EXEC -Funktion enthält.

$ MAN EXEC

Jetzt können Sie im oben genannten Bild die Arten von Exec beobachten. Dies sind die Familie der EXEC -Funktionen. Jeder ist für eine andere Funktion nach derselben Basis „Exec“ für eine andere Funktion.”

Beispiel: Wenn wir uns nun weiter bewegen, werden wir die Funktionalität von Exec mit Hilfe eines Beispiels beschreiben. Wir werden eine Funktion von Exec übernehmen, um seine Arbeit zu demonstrieren, nämlich „ExecV).Erstens erstellen wir zwei Dateien mit der Erweiterung von ".C.Nach ihrer Erstellung werden wir jeweils jeweilige Codes schreiben und sie ausführen, um das Ergebnis zu sehen.

Betrachten Sie einen Dateinamen „Sample4.C". Bitte öffnen Sie es und verwenden Sie den folgenden Code. In diesem Code haben wir execV in einer bestimmten Weise verwendet, die unten angegeben ist.

Execv (“./sample4Copy ”, Args);

Der erste Teil enthält den neuen Verzeichnispfad, und der zweite Teil zeigt das Argumentearray als Parameter, den wir übergeben haben.

Probe4.C

Zunächst haben wir die ID des aktuellen Prozesses gedruckt. Zweitens haben wir am Ende ein Charakter -Array mit Null für die Kündigung erstellt. Drittens haben wir die Sample4Copy -Funktion bezeichnet.

Probe4Copy.C

Wenn wir die EXEC -Funktion () aufrufen, wird das Prozessbild geändert. Nachfolgend zitiert das Bild unten den Code von Sample4Copy.C.

Hier haben wir nur Druckanweisungen verwendet, um die ID des aktuellen Prozesses zu erhalten.

Die Ausgabe der jeweiligen Codes kann durch Verwendung der folgenden Befehle erhalten werden.

$ GCC-O Sample4 Sample4.C
$ Gcc -o sample4Copy sample4Copy.C
$ ./Probe4

Wie wir bereits beschrieben haben, wird das „GCC“ -Swort zum Kompilieren des Codes verwendet, und nach dem Kompilieren wird der Code erfolgreich ausgeführt.

Nach dem Bild ist die PID von Sample4 4.Die C -Datei wird zuerst angezeigt, wie sie vor dem Exec -Anruf deklariert wurde. Dann, nachdem die Funktion exec () aufgerufen wurde, werden beide Druckanweisungen von Datei sample4Copy.c wird ausgeführt, wo GetPid () verwendet wird, um die ID des Prozesses zu erhalten.

Codierung mit einer Gabel in C

Die Fork () -Funktion erstellt den untergeordneten Prozess aus dem übergeordneten Prozess. Es enthält auch zwei Header, einschließlich der darin enthaltenen Gabelinformationen.

Syntax:

Pid_t gabel (void);

Wir können die Mannseite für Hilfe bei der Verwendung verwenden

$ MAN Gabel

Beispiel: Betrachten Sie nun ein Beispiel, indem Sie eine Datei erstellen “Sample3.C". Wir geben den Code in der Datei ein. Nach dem Code haben wir den Fork -Status als Forkrank festgelegt.

Probe3.C

Wir haben die Anweisung „If-ELSE“ verwendet, um die Bedingung anzuwenden. Einfache Druckbefehle werden hier deklariert, um das Verständnis des Fork () -Konzepts zu unterstützen. Forcrank wird zuerst als 0 und dann -1 deklariert. Mit einer Fork () gibt es jetzt zwei Prozesse, die gleichzeitig funktionieren. Die Ausgabe kann durch Verwendung desselben Codes erhalten werden, wie oben in Exec -Beispiel.

$ Gcc -o sample3.C
$./Probe3

Die Ausgabe zeigt, dass der untergeordnete Prozess früher als der Elternteil ausgeführt wird, wenn der übergeordnete Prozess wartete. Die Wartefunktion impliziert, dass die übergeordnete Funktion wartet, es sei denn.

Fork- und EXEC -Systemaufrufe gemeinsam

Hier nehmen wir zwei Dateien mit dem Namen „Sample1.C ”und„ Sample2.C". Öffnen Sie zunächst das Datei -Sample1.c und schreiben Sie den Code, der unten im Bild angehängt ist. Wir haben hier den Fork () -Systemanruf verwendet; Wenn der Kinderprozess erstellt wird, wird P mit 0 zugewiesen. Während der Verwendung von EXEC-Systemanruf.C wird durch Probe2 ersetzt.C.

Probe1.C

Probe2.C

Ähnlich wie die oben diskutierten Beispiele enthält die Sample2 -Datei die darin enthaltenen Printf -Anweisungen. In Probe1.C, der erste Druckbefehl wird zuerst ausgeführt, dann wird die Gabelfunktion aufgerufen, wenn p == 0, dann der untergeordnete Teil ausgeführt wird und Sample2.C -Datei wird ausgeführt. Die Ausgabe enthält GCC, um beide Dateien zu kompilieren. Hier übergeordnete Beispiel1.C ID und Sample2.C ID ist anders, weil sie Eltern und Kind sind.

Abschluss

In diesem Artikel haben wir sowohl Fork als auch Exec getrennt und gemeinsam verwendet, um die Verwendung und das Konzept leicht zu verstehen. Ich hoffe.