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

Pythonでfork()を使用して子プロセスを作成する方法

私たちのタスクは子プロセスを作成し、fork()Pythonの関数は親プロセスと子プロセスのプロセスIDを表示します。

使用時fork()、それが独自のコピーを作成します、これはLINUX、UNIXの非常に重要な側面です。fork()マルチスレッド環境に適用される主なものです、これは親スレッドから作成された子スレッドがそのスレッドを繰り返し実行することを意味します。エラーが発生した場合、このメソッドは負の値を返します、子プロセスの場合、このメソッドは0を返します、それ以外の場合、正の値を返します、これは親プロセスであることを意味します。

fork()モジュールはOSモジュールまたは仮终端モジュールPTYとして呼び出すことができます。したがって、osまたはptyをインポートする必要があります。

fork()プロセスを作成し、引数とプロセスIDを返すために使用されます。fork()新しいプロセスを作成する主な理由(呼び出し元の子プロセスになる)は、新しい子プロセスを作成するとき、2つのプロセスが次の命令を実行します。

fork()私たちの戻り値は、戻り値が0の場合、子プロセスであることを示し、正の値が返されると親プロセスであることを示し、負の値が返されると何らかのエラーが発生したことを示します。

サンプルコード

import os
   def parentchild():
      n = os.fork()
   if n > 0:
      print("親プロセス: ", os.getpid())
   else:
      print("子プロセス: ", os.getpid())
# ドライバーコード
parentchild()

出力結果

親プロセス: 8023
子プロセス: 8024
$

仮终端ユーティリティモジュールptyは、仮终端コンセプトを処理するために定義されています。この機能を使用すると、別のプロセスを起動したり、コントロールターミナルから読み取ったり書き込んだりすることができます。

このモジュールは高度にプラットフォーム依存です。これらの操作を実行するにはUNIXシステムを使用する必要があります。

サンプルコード

import pty, os
   def process_parent_child():
      (process_id, fd) = pty.fork()
   print("現在のプロセスのプロセスIDは: ", "" + str(os.getpid()))
   print("子プロセスのプロセスIDは: ", "" + str(process_id))
process_parent_child()

出力結果

現在のプロセスのプロセスIDは: 12508
子プロセスのプロセスIDは: 12509