乙個程序使用fork建立子程序,如果子程序退出,而父程序沒有呼叫wait或waitpid獲取子程序的狀態資訊,那麼子程序的程序描述符仍然儲存在系統中,這種程序稱為殭屍程序。
殭屍程序是子程序結束,父程序不知道。
實現思路:父程序建立完子程序sleep 60s,子程序sleep 10s後退出。
package main
import (
"fmt"
"os"
"time"
)func main() ,
env: os.environ(),
} cmd := "/bin/bash"
args := string
pro, err := os.startprocess(cmd, args, attr)
if err != nil
fmt.printf("parent id: %d ,child id %d \n", os.getpid(), pro.pid)
time.sleep(60 * time.second)
fmt.println("parent: wake up")
// 為子程序收屍
乙個父程序退出,而它的乙個或多個子程序還在執行,那麼這些子程序將稱為孤兒程序。孤兒程序將被init程序(程序號為1)所收養,並由init程序對他們完成狀態收集工作。
孤兒程序是在父程序死掉後還在執行自己任務的程序。
實現思路:生成乙個子程序,子程序先sleep 30s 後輸出退出資訊。 父程序建立完子程序後sleep 10s後退出。在父程序sleep 10s期間檢視子程序的父程序id, 父程序退出後,再檢視子程序的id。
殭屍程序和孤兒程序
殭屍程序 乙個子程序在其父程序還沒有呼叫wait 或waitpid 的情況下退出。這個子程序就是殭屍程序。孤兒程序 乙個父程序退出,而它的乙個或多個子程序還在執行,那麼那些子程序將成為孤兒程序。孤兒程序將被init程序 程序號為1 所收養,並由init程序對它們完成狀態收集工作。殭屍程序將會導致資源...
殭屍程序和孤兒程序
什麼是殭屍程序?乙個子程序在其父程序沒有呼叫wait 或waitpid 的情況下退出。這個子程序就是殭屍程序。如果其父程序還存在而一直不呼叫wait,則該殭屍程序將無法 等到父程序結束後,會被init 驗證 include include includeint main 3秒後查詢其程序資訊 通過上...
殭屍程序和孤兒程序
殭屍程序和孤兒程序 在unix系統程式設計中,常常會碰到兩個概念 僵死程序和孤兒程序 僵死程序 在unix程序模型中,程序是按照父程序產生子程序,子程序產生子子程序這樣的方式建立出完成各項相互協作功能的程序的。當乙個程序完成它的工作終止之後,它的父程序需要呼叫wait 或者waitpid 系統呼叫取...