Python 孤兒程序與殭屍程序

2022-05-07 07:12:08 字數 1453 閱讀 3330

from multiprocessing import process,current_process

import time,sys

def func():

# 孤兒程序,父程序早於子程序退出

print('子程序pid',current_process().pid)

time.sleep(10)

print('子程序退出')

def main():

print('子程序pid',current_process().pid)

p = process(target=func)

p.start()

print('父程序退出')

sys.exit() # 退出程式

# p.join(timeout=1) # 如果**失敗,則不**

# timeout 父程序只會阻塞等待1秒常識**子程序。

if __name__ == '__main__':

main()

import os,time

# 父程序早於子程序退出,此時子程序一直會被1號程序**,監控

def func():

pid = os.fork() #fork()會執行分割成兩部分,呼叫一次,返回兩次,且在fork()在linux執行。

if pid == 0: # 子程序pid為0

time.sleep(10)

print('我是子程序')

if pid > 0: # 父程序pid為子程序的pid

print('我是父程序,我開啟的子程序pid是',pid)

if __name__ == '__main__':

func()

import time,sys

from multiprocessing import process,current_process

def func():

print('子程序pid',current_process().pid)

print('子程序退出')

def main():

print('子程序pid',current_process().pid)

p = process(target=func)

p.start()

time.sleep(10)

print('父程序退出')

sys.exit() # 退出程式

# p.join(timeout=1) # 如果**失敗,則不**

# timeout 父程序只會阻塞等待1秒常識**子程序。

if __name__ == '__main__':

main()

# 注:在linux中檢視程序,z+,代表殭屍程序 ps -aux|grep python

殭屍程序與孤兒程序

殭屍程序 如果乙個程序通過fork 建立子了乙個程序,當子程序退出而父程序還沒有呼叫wait waitpid來儲存子程序的狀態且 它,此時子程序的狀態描述資訊仍然保留在系統中,稱這類程序為殭屍程序 殭屍程序的優點是方便上層程序得知子程序的退出狀態,但是如果不及時 會造成記憶體洩露 孤兒程序 當乙個父...

殭屍程序與孤兒程序

孤兒程序是指在程序還未退出之前它的父程序就已經先退出了,簡單來說就是乙個沒有父程序的子程序就是孤兒程序。既然所有的程序都必須在退出之後被父程序的wait 或waitpid 以釋放其遺留在系統中的一些資源,那麼孤兒程序的這些東西又誰來處理呢?這個任務就落到了init程序的身上,init程序就好像乙個收...

殭屍程序與孤兒程序

在父程序執行wait 之前,其子程序就已終止,即使子程序終止,系統也允許父程序在以後的某個時刻去執行wait 以確定子程序是如何終止。核心通過將子程序轉為殭屍程序,以釋放其占用的系統資源,供其他程序使用,該程序唯一保留的是系統pcb中的一條記錄,其中包含了子程序的id,終止狀態,和資源使用的資料。當...