English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Subprozesse mit fork() in Python erstellen

Unsere Aufgabe ist es, einen Kindprozess zu erstellen undfork()Die Funktion in Python zeigt die Prozess-ID des Elternprozesses und des Kindprozesses an.

wenn sie verwendet wirdfork()und erstellt seine eigene Kopie, was ein sehr wichtiger Aspekt von LINUX und UNIX ist.fork()Diese Methode ist hauptsächlich für Multithreading-Umgebungen geeignet, was bedeutet, dass ein von einem Elternprozess erstellter Kindprozess die gleiche Thread-Ausführung wiederholt. Wird ein Fehler aufgetreten, gibt diese Methode einen negativen Wert zurück, für Kindprozesse gibt sie 0 zurück, andernfalls gibt sie einen positiven Wert zurück, was bedeutet, dass wir im Elternprozess sind.

derfork()Modul kann von dem OS-Modul oder vom Pseudo-Terminal-Modul PTY aufgerufen werden. Daher sollten wir os oder pty importieren.

denfork()Für die Erstellung eines Prozesses, der keine Parameter hat und die Prozess-ID zurückgibt. Fürfork()Der Hauptgrund für die Erstellung eines neuen Prozesses (wird zum Kindprozess des Aufrufers). Wenn ein neuer Kindprozess erstellt wird, führen beide Prozesse das nächste Befehl aus.

fork()Unsere Rückgabewerte können verstanden werden, wenn der Rückgabewert 0 bedeutet, dass wir im Kindprozess sind, wenn ein positiver Wert zurückgegeben wird, bedeutet das, dass wir im Elternprozess sind, und wenn ein negativer Wert zurückgegeben wird, bedeutet das, dass ein Fehler aufgetreten ist.

Beispielcode

import os
   def parentchild():
      n = os.fork()
   if n > 0:
      print("Elternprozess: ", os.getpid())
   else:
      print("Kindprozess: ", os.getpid())
# Treibercode
parentchild()

Ausgaberesultat

Elternprozess: 8023
Kindprozess: 8024
$

Der Pseudo-Terminal-Utility-Modul pty ist definiert als die Verarbeitung des Pseudo-Terminal-Konzepts. Mit dieser Funktion können wir einen anderen Prozess starten oder Programme aus dem Kontrollterminal lesen oder schreiben.

Dieses Modul ist stark plattformabhängig. Wir sollten diese Operationen auf UNIX-Systemen ausführen.

Beispielcode

import pty, os
   def process_parent_child():
      (process_id, fd) = pty.fork()
   print("Der Prozess-ID für den aktuellen Prozess ist: ", + str(os.getpid()))
   print("Der Prozess-ID für den Kindprozess ist: ", + str(process_id))
process_parent_child()

Ausgaberesultat

Der Prozess-ID für den aktuellen Prozess ist: 12508
Der Prozess-ID für den Kindprozess ist: 12509