Abb. 1: Basic Fork () Workflow
In diesem Artikel werde ich Ihnen zeigen, wie Sie den Fork () -Systemanruf verwenden, um untergeführte Prozesse in C zu erstellen. Also lasst uns anfangen.
Fork () Syntax und Rückgabewert:
Die Syntax der Fork () -Systemfunktion lautet wie folgt:
pid_t gabel (void);Die Fork () -Systemfunktion akzeptiert kein Argument. Es gibt eine Ganzzahl des Typs zurück pid_t.
Bei Erfolg gibt Fork () die Haltung des Kinderprozesses zurück, der größer als 0 ist. Im Kinderprozess beträgt der Rückgabewert 0. Wenn Fork () fehlschlägt, gibt es -1 zurück.
Einfacher Fork () Beispiel:
Ein einfaches Fork () -Stile ist unten angegeben:
#enthaltenHier habe ich Fork () verwendet, um einen untergeordneten Prozess aus dem Haupt-/Elternprozess zu erstellen. Dann druckte ich die PID (Prozess -ID) und die PPID (übergeordnete Prozess -ID) aus dem Kinder- und übergeordneten Prozess aus. Beim übergeordneten Prozess wartt (NULL), um auf das Ende des Kinderprozesses zu warten. Beim Kinderprozess wird Exit () verwendet, um den Kinderprozess zu beenden. Wie Sie sehen können, ist die PID des übergeordneten Prozesses das PPID des Kinderprozesses. Also der Kinderprozess 24738 gehört zum Elternprozess 24731.
Sie können auch Funktionen verwenden, um Ihr Programm modularer zu gestalten. Hier habe ich benutzt processTask () Und Elterntask () Funktionen für die Kinder- und Elternprozesse. So wird Fork () tatsächlich verwendet.
#enthaltenDie Ausgabe des obigen Programms:
Ausführen mehrerer Kinderprozesse mit Fork () und Loop:
Sie können auch Schleife verwenden, um so viele Kinderprozesse zu erstellen, wie Sie benötigen. Im folgenden Beispiel habe ich 5 untergeordnete Prozesse für die Schleife erstellt. Ich habe auch die PID und die PPID aus den untergeordneten Prozessen gedruckt.
#enthaltenWie Sie sehen können, ist die übergeordnete Prozess -ID in allen untergeordneten Prozessen gleich. Alle von ihnen gehören also demselben Elternteil. Sie führen auch linear aus. Einer nach dem anderen. Die Kontrolle von untergeordneten Prozessen ist eine ausgefeilte Aufgabe. Wenn Sie mehr über Linux -Systemprogrammierung und Funktionsweise erfahren, können Sie den Fluss dieser Prozesse trotzdem steuern, die Sie mögen.
Beispiel des wirklichen Lebens:
Verschiedene komplexe mathematische Berechnungen wie MD5, SHA256 usw. Die Hash -Generation erfordert viel Verarbeitungsleistung. Anstatt solche Dinge im selben Prozess wie das Hauptprogramm zu berechnen, können Sie den Hash nur für einen Kinderprozess berechnen und den Hash an den Hauptprozess zurückgeben.
Im folgenden Beispiel habe ich in einem untergeordneten Prozess einen 4-stelligen PIN-Code generiert und ihn an den übergeordneten Prozess, das Hauptprogramm, gesendet. Dann druckte ich den Pin -Code von dort aus.
#enthaltenWie Sie sehen können, erhalte ich jedes Mal, wenn ich das Programm ausführe.
So verwenden Sie also den Fork () -Systemanruf unter Linux. Danke, dass du diesen Artikel gelesen hast.