Linux 程序等待

2021-10-24 15:21:50 字數 1931 閱讀 2266

#include

#include

pid_t wait

(int

*status)

;//返回值:成功返回等待程序pid,失敗返回-1.

//引數:輸出型引數,獲取最近稱退出狀態,不關心則可以設定為null

pid_t waitpid

(pid_t pid,

int* status,

int optons)

;// 返回值:當正常返回的時候waitpid返**集到子程序的程序id;

// 如果設定了選項wnohang,而呼叫中waitpid發現沒有已退出的子程序可收集,則返回0

// 如果呼叫**錯,則返回-1,這是error會被設定成相應的值以指示錯誤所在;

// 引數:pid:pid =-1,等待任乙個子程序,與wait等效

// pid > 0,等待其程序id與pid相等的子程序

// status: wifeited(status):若為正常終止子程序返回的狀態,則為真(檢視程序是否正好吃那個退出)

// wexitstatus(status):若wifexited非零,提取子程序退出碼(檢視程序的退出碼)

// options: wnohang:若pid執行的子程序沒有結束,則waitpid()函式返回0,不予以等待。若正常結束,則返回該程序的id

#include

#include

char

*strerror

(errno)

;// 根據錯誤編號獲取文字資訊---錯誤都是在上一次系統呼叫介面使用錯誤的原因

perror(char

*msg);

// 直接列印上一次系統呼叫介面使用錯誤的原因

#include

extern

char

**environ;

// 載入乙個新的程式到核心中,將當前的pcb的對映指向這個新的程式,排程這個新的程式的執行

intexecl

(const

char

*path,

const

char

* arg,..

.);//path-帶路徑的程式檔名稱;arg、...表示程式的執行引數,逐個賦值,最終以null結尾

intexeclp

(const

char

*file,

const

char

*arg,..

.);//path環境變數指定了一些路徑,execlp會去path環境變數指定的路徑下查詢程式檔案

intexecle

(const

char

*path,

const

char

*arg,..

.,char

*const envp)

;

int

execv

(const

char

*path,

char

*const ar**)

;// l和v的區別:程式執行引數的賦予方式不同

intexecvp

(const

char

*file,

char

*const ar**)

;// 有無p的區別:新的程式檔案的名稱是否需要帶路徑

intexecve

(const

char

*file,

char

*const ar**,

char

*const envp)

;// 有沒有e區別:是否自定義環境變數

LINUX 程序等待

wait 函式一般用在父程序中等待 子程序的資源,而防止殭屍程序的產生。什麼是殭屍程序?pid t wait int status 引數 status 是乙個整形指標。如果status不是乙個空指標,則終止程序的終止狀態將儲存在該指標所指向的記憶體單元中。如果不關心終止狀態,可以將 status引數...

Linux 程序等待

目錄 程序等待 程序等待的必要性 程序等待的方法 wait waitpid 引數int status 誰要等待?等待什麼?為什麼要等待 首先要知道程序終止或退出的時候會發生什麼,程序退出時會關閉所有檔案描述符,釋放在使用者空間分配的記憶體,但是pcb卻會暫時保留,裡面存著退出狀態,比如乙個程序正常退...

Linux 程序等待

阻塞等待 為了完成乙個功能發起呼叫,當前若不具備完成條件,等待直到條件具備完成功能後返回 非阻塞等待 為了完成乙個功能發起呼叫,當前若不具備完成條件,則立即報錯返回 wait方法 功能 阻塞等待 任意乙個子程序退出,獲取返回值 include include pid t wait int statu...