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,終止狀態,和資源使用的資料。當...