linux常用庫函數

1. setenv(),  getenv()  可以用來做全局傳參

表頭文件 #include<stdlib.h>
定義函數 int setenv(const char *name,const char * value,int overwrite);

頭文件: stdlib.h
用 法:char *getenv(char *envvar);
頭文件

首先要說明的是,通過此函數並不能添加或修改 shell 進程的環境變量,或者說通過setenv函數設置的環境變量只在本進程,而且是本次執行中有效。如果在某一次運行程序時執行了setenv函數,進程終止後再次運行該程序,上次的設置是無效的,上次設置的環境變量是不能讀到的。

例:

void main() {
    setenv("IPOD_CACHE_FILE_PATH", "/storage/sdcard0/ipod", 1);
    char *chipPath = getenv("IPOD_CACHE_FILE_PATH");
}

2.  pthread_detach();

#include <pthread.h>
int pthread_detach(pthread_t thread);


創建一個線程默認的狀態是joinable, 如果一個線程結束運行但沒有被join,則它的狀態類似於進程中的Zombie Process,即還有一部分資源沒有被回收(退出狀態碼),所以創建線程者應該pthread_join來等待線程運行結束,並可得到線程的退出代碼,回收其資源(類似於wait,waitpid)
但是調用pthread_join(pthread_id)後,如果該線程沒有運行結束,調用者會被阻塞,在有些情況下我們並不希望如此,比如在Web服務器中當主線程爲每個新來的鏈接創建一個子線程進行處理的時候,主線程並不希望因爲調用pthread_join而阻塞(因爲還要繼續處理之後到來的鏈接),這時可以在子線程中加入代碼

pthread_detach(pthread_self())
或者父線程調用
pthread_detach(thread_id)(非阻塞,可立即返回)
這將該子線程的狀態設置爲detached,則該線程運行結束後會自動釋放所有資源。

待續,有比較實用的接口還會添加





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章