Unix環境變數 執行緒基礎

2021-10-04 21:24:03 字數 1916 閱讀 2527

標頭檔案:#include

返回值:若相等則返回非0值,否則返回0值

作用:判斷兩個執行緒id是否相等

pthread_t pthread_self(void);

標頭檔案:#include

返回值:呼叫執行緒自身的執行緒id

intpthread_create(pthread_t *tidp, const pthread_attr_t * attr, void *(*start_rtn)(void *), void *restrict arg);

標頭檔案: #include

引數:tidp:存放的是新執行緒的執行緒id,

attr:用於定製各種不同的執行緒屬性,為null,建立乙個具有預設屬性的執行緒。

執行緒退出的三種方式:

(1)int pthread_cancel(pthread_t thread); 

作用:請求同程序的指定的執行緒thread退出,但實際是否生效不確定

(2)int pthread_exit(void* state); 

作用:退出當前執行緒,並返回狀態

(3)執行緒函式直接return

int pthread_join(pthread_t thread, void **retval);

引數:pthread_t thread: 等待的執行緒的執行緒id

void **retval   : 等待的執行緒的返回的錯誤碼,包括pthread_exit()函式或直接return的狀態

注意:此函式只對那些執行緒屬性不是分離的才有作用,否則直接返回錯誤einval.

int pthread_detach(pthread_t tid);

作用:分離指定執行緒

執行緒的高階應用:

void pthread_cleanup_push(void (*rtn)(void *), void *arg);

引數:rtn:乙個函式指標,指向乙個自定義的清理函式

arg:傳給清理函式的引數

作用:該函式用來將乙個函式壓入(或者註冊)到乙個清理函式棧的頂端。

標頭檔案:#include

void pthread_clean_pop(int execute);

標頭檔案:#include

引數:execute:為零時,移除pthread_cleanup_push()壓入(或者叫註冊)的清理函式,當為非零時,表示執行pthread_cleanup_push()壓入(或者叫註冊)的清理函式。

注意:(1)當乙個執行緒被取消時,這些清理函式會以與push註冊時相反的順序被執行,且執行後被從棧中移除

(2)通過呼叫函式pthread_exit()終止執行緒時,這些清理函式被呼叫,但是如果用return語句來終止執行緒,則不會呼叫這些清理函式

(3)當呼叫pthread_cleanup_pop()函式且其引數為非零時,就呼叫棧頂的清理函式執行,且執行完後,就將該清理函式從棧中移除

(4)對函式pthread_cleanup_push()和函式pthread_clean_up()的呼叫必須成對出現,否則編譯出錯

Unix 環境變數

linux 下處理環境變數常見的幾個操作 env 顯示當前所有的環境變數 set 顯示當前bash下使用者自定義的變數和環境變數 export 把自定義的變數轉換成環境變數 環境表 unix 下的每乙個程式都會有一張環境表,其實我們可以想象,main函式使如下這種形式 int main int ar...

《unix高階環境程式設計》程序環境 環境變數

環境字串一般表示如下 cpp view plain copy name value 環境變數名,環境變數值 以下根據對環境變數不同的操作得到不同的結果,包括獲取環境變數當前值,新增環境變數,修改環境變數和刪除環境變數 相對應的函式分別為getenv putenv setenv和unsetenv函式,...

UNIX環境變數 讀寫函式變體

我們經常使用的讀寫函式是read 和write 但是每次讀寫只能讀入或者寫入到乙個緩衝區,今天介紹另一種讀寫函式,可以一次呼叫,讀寫多個非連續緩衝區。include ssize t readv int fd,const struct iovec iov,int iovcnt ssize t writ...