1.父程序列印父親後處於掛起狀態等待子程序完成所有命令後,父程序處理了子程序後在執行父程序的命令。
import os
import time
re = os.fork(
)if re:
print
('父親'
) result = os.waitpid(-1
,0)//
0表示掛起父程序當子程序完成任務後父程序處理了子程序在執行父程序的的命令
print
(result)
//返回值(子程序的pid,0)
time.sleep(10)
print
('結束'
)else
:print
('兒子'
) time.sleep(25)
print
('結束'
)
2.在不掛起父程序的情況下父程序列印父親後,不管子程序有沒有執行完命令,同樣執行父程序下的命令,當父程序的命令執行完後子程序任然沒有結束的話,systemd就會接管子程序等待子程序執行完命令後systemd會自動處理子程序。
import os
import time
re = os.fork(
)if re:
print
('父親'
) result = os.waitpid(-1
,1)//
1表示不掛起父程序
print
(result)
//返回值是(0,0)
time.sleep(10)
print
('父程序結束'
)else
:print
('子'
) time.sleep(25)
print
('子程序結束'
waitpid函式原始碼
int sys waitpid pid t pid,unsigned long stat addr int options 掛起當前程序,直到pid指定的子程序退出終止或者收到要求終止該程序 的訊號 或者需要呼叫 乙個訊號處理函式 elseif pid elseif pid 1 以下的語名定為要找到...
wait 和 waitpid 的區別
父程序可能比子程序早結束,如果父程序要阻塞以等待子程序,可以使用wait或waitpid函式,wait函式只是waitpid函式的簡化版。include pid t wait int statloc pid t waitpid pid t pid,int statloc,int optins 區別 ...
wait和 wait pid函式用法
wait和 wait pid函式用法 wait的函式原型是 i nclude 提供型別pid t的定義 i nclude pid t wait int status 程序一旦呼叫了wait,就立即阻塞自己,由wait自動分析是否當前程序的某個子程序已經退出,如果讓它找到了這樣乙個已經變成殭屍的子程序...