1. 程式人生 > >linux常用庫函式

linux常用庫函式

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

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

用 法: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,則該執行緒執行結束後會自動釋放所有資源。

待續,有比較實用的介面還會新增