Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 fork()를 사용하여 자식 프로세스 만들기

<시간/>

우리의 임무는 파이썬에서 fork() 함수를 사용하여 자식 프로세스를 만들고 부모와 자식 프로세스의 프로세스 ID를 표시하는 것입니다.

fork()를 사용할 때 자신의 복사본을 생성하는 것은 LINUX, UNIX에서 매우 중요한 측면입니다. fork()는 주로 멀티스레딩 환경에 적용 가능합니다. 즉, 스레드 실행이 복제되어 상위 스레드에서 자식 스레드가 생성된다는 의미입니다. 오류가 발생하면 메서드는 음수 값을 반환하고 자식 프로세스에 대해서는 0을 반환하고 그렇지 않으면 부모 프로세스에 있음을 의미하는 양수 값을 반환합니다.

fork() 모듈은 os 모듈이나 pty라는 의사 터미널 모듈에서 사용할 수 있습니다. 따라서 os 또는 pty를 가져와야 합니다.

fork()는 프로세스를 생성하는 데 사용되며 인수가 없으며 프로세스 ID를 반환합니다. fork()를 사용하여 호출자의 자식 프로세스가 되는 새 프로세스를 만드는 주된 이유입니다. 새 자식 프로세스가 생성되면 두 프로세스 모두 다음 명령을 실행합니다.

fork()의 반환 값은 0을 반환할 때 우리가 자식 프로세스에 있음을 의미하고 양수 값을 반환하면 부모 프로세스에 있음을 의미하고 음수 값을 반환하면 오류가 발생했음을 의미하는 프로세스를 이해할 수 있습니다.

예시 코드

import os
   def parentchild():
      n = os.fork()
   if n > 0:
      print("Parent process : ", os.getpid())
   else:
      print("Child proces : ", os.getpid())
# Driver code
parentchild()

출력

Parent process : 8023
Child process : 8024
$

의사 터미널 유틸리티 모듈 pty는 의사 터미널 개념을 처리하도록 정의됩니다. 이를 사용하여 다른 프로세스를 시작할 수 있으며 프로그램을 사용하여 제어 터미널에서 읽거나 쓸 수도 있습니다.

이 모듈은 고도로 플랫폼 지향적입니다. 이러한 작업을 수행하려면 UNIX 시스템을 사용해야 합니다.

예시 코드

import pty, os
   def process_parent_child():
      (process_id, fd) = pty.fork()
   print("The Process ID for the Current process is: " + str(os.getpid()))
   print("The Process ID for the Child process is: " + str(process_id))
process_parent_child()
입니다.

출력

The Process ID for the Current process is: 12508
The Process ID for the Child process is: 12509