1. 程式人生 > >pythonNet 04多程序

pythonNet 04多程序

fork注意:
*進入阻塞態的程序一定會讓出cpu時間片
*各個程序在自己空間內對資料的操作不影響其他程序
*父程序在執行fork之前開闢的空間子程序也會複製

程序相關函式

os.getpid()
功能獲取當前程序的PID號
返回值:返回當前程序的PID

os.getppid()
功能;獲取父程序的PID號
返回值:返回父程序PID

os._exit(status)
功能:退出程式
引數:整數 表示自定義的程序退出狀態標識

sys.exit([status])
功能:退出程序
引數:整數 表示退出狀態 預設為0
        傳一個字串,則退出時會列印該字串


孤兒程序和殭屍程序

孤兒程序;父程序先於子程序退出,則子程序成為孤兒程序

*孤兒程序會被系統程序收養,此時系統程序就好成為該程序父程序

殭屍程序:子程序先於父程序退出,父程序沒有處理子程序退出狀態,此時子程序就會成為殭屍程序

*殭屍程序雖然結束但是會存留部分PCB在記憶體,大量的殭屍程序會佔用記憶體資源


如何避免殭屍程序產生
    *處理自己成退出狀態
    pid,status =os.wait()
    功能;在父程序中阻塞等待子程序退出
    返回值:pid 退出的子程序的PID


            status 子程序退出狀態


    pid,status =os.waitpid(pid,option)
    功能;在父程序中等待子程序退出
    引數:pid -1 表示等待任意子程序
             >0 表示等待指定PID的子程序退出
          option 0表示阻塞等待


                WNOHANG 表示非阻塞
    返回值:pid 退出的子程序的PID
            status 子程序的退出狀態

    建立二級子程序
    1.父程序建立子程序等待子程序退出
    2.子程序建立二級子程序然後退出
    3.二級子程序成為孤兒,和原來父程序各自執行任務