標頭檔案:#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);注意:(1)當乙個執行緒被取消時,這些清理函式會以與push註冊時相反的順序被執行,且執行後被從棧中移除標頭檔案:#include
引數:execute:為零時,移除pthread_cleanup_push()壓入(或者叫註冊)的清理函式,當為非零時,表示執行pthread_cleanup_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...