程式碼靜態存放於磁碟,載入記憶體獲得生命,由 CPU 動態執行。為管理多進程並行,核心為每個進程建立 PCB (Process Control Block,任務控制塊),包含:
pid_t)file 結構體)main() 開始執行。PID 不變,成功不返回,失敗返回 -1。if ((pid = fork()) == 0) { execl(...); }wait() / waitpid() 讀取狀態並徹底釋放 PCB。wait 並將退出碼存入 $?。wait → 僵屍狀態 (Z)。kill 無效 (已死)。解決:kill 父進程 → 進程被 init (PID 1) 收養 → init 週期性 wait 清理。pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
返回清理的子進程 PID,錯誤 -1。父進程呼叫時可能阻塞 (子進程皆執行中)、立即返回 (有僵屍子進程)、錯誤 (無子進程)。