一、在線手冊
Linux c庫函數分類及示例:
http://net.pku.edu.cn/~yhf/linux_c/
線程不安全函數列表:http://kernel.org/doc/man-pages/online/pages/man7/pthreads.7.html
二、函數分類摘要
字符測試函數● isalnum(測試字符是否為英文字母或數字) ● isalpha(測試字符是否為英文字母) ● isascii(測試字符是否為ASCII碼字符) ● isblank(測試字符是否為空格字符) ● iscntrl(測試字符是否為ASCII碼的控制字符) ● isdigit(測試字符是否為阿拉伯數字) ● isgraph(測試字符是否為可打印字符) ● islower(測試字符是否為小寫英文字母) ● isprint(測試字符是否為可打印字符) ● isspace(測試字符是否為空格字符) ● ispunct(測試字符是否為標點符號或特殊符號) ● isupper(測試字符是否為大寫英文字母) ● isxdigit(測試字符是否為16進制數字) |
時間函數● asctime(將時間和日期以字符串格式表示) ● clock(取得進程占用CPU的大約時間) ● ctime(將時間和日期以字符串格式表示) ● difftime(計算時間差距) ● ftime(取得目前的時間和日期) ● gettimeofday(取得目前的時間) ● gmtime(取得目前的時間和日期) ● localtime(取得當地目前的時間和日期) ● mktime(將時間結構數據轉換成經過的秒數) ● settimeofday(設置目前的時間) ● strftime(格式化日期和時間) ● time(取得目前的時間) ● tzset(設置時區以供時間轉換) |
數據結構函數● bsearch(二元搜索) ● hcreate(建立哈希表) ● hdestory(刪除哈希表) ● hsearch(哈希表搜索) ● insque(加入一項目至隊列中) ● lfind(線性搜索) ● lsearch(線性搜索) ● qsort(利用快速排序法排列數組) ● rremque(從隊列中刪除一項目) ● tdelete(從二叉樹中刪除數據) ● tfind(搜索二叉樹) ● tsearch(二叉樹) ● twalk(走訪二叉樹) |
錯誤處理函數● ferror(檢查文件流是否有錯誤發生) ● perror(打印出錯誤原因信息字符串) ● streror(返回錯誤原因的描述字符串) |
環境變量函數● getenv(取得環境變量內容) ● putenv(改變或增加環境變量) ● setenv(改變或增加環境變量) ● unsetenv(清除環境變量內容) |
記錄函數● closelog(關閉信息記錄) ● openlog(准備做信息記錄) ● syslog(將信息記錄至系統日志文件) |
進程通信(IPC)函數● ftok(將文件路徑和計划代號轉為SystemcVIPCkey) ● msgctl(控制信息隊列的運作) ● msgget(建立信息隊列) ● msgrcv(從信息隊列讀取信息) ● msgsnd(將信息送入信息隊列) ● semctl(控制信號隊列的操作) ● semget(配置信號隊列) ● semop(信號處理) ● shmat(attach共享內存) ● shmctl(控制共享內存的操作) ● shmdt(detach共享內存) ● shmget(配置共享內存) |
內存配置函數● alloca(配置內存空間) ● brk(改變數據字節的范圍) ● calloc(配置內存空間) ● free(釋放原先配置的內存) ● getpagesize(取得內存分頁大小) ● malloc(配置內存空間) ● mmap(建立內存映射) ● munmap(解除內存映射) ● realloc(更改己配置的內存空間) ● sbrk(增加程序可用的數據空間) |
數據轉換函數● atof(將字符串轉換成浮點型數)1 ● atoi(將字符串轉換成整型數) ● atol(將字符串轉換成長整型數) ● ecvt(將浮點型數轉換成字符串,19取四舍五入) ● fcvt(將浮點型數轉換為字符串,20取四舍五入) ● gcvt(將浮點型數轉換為字符串,21取四舍五入) |
字符串處理函數● bcmp(比較內存內容) ● bcopy(拷貝內存內容) ● bzero(將一段內存內容全清為零) ● ffs(在一整型數中查找第一個值為真的位) ● index(查找字符串中第一個出現的指定字符) ● memccpy(拷貝內存內容) ● memchr(在某一內存范圍中查找一特定字符) ● memcmp(比較內存內容) ● memcpy(拷貝內存內容) ● memfrob(對內存區域編碼) ● memmove(拷貝內存內容) ● memset(將一段內存空間填入某值) ● rindex(查找字符串中最后一個出現的指定字符) ● strcasecmp(忽略大小寫比較字符串) ● strcat(連接兩字符串) ● strchr(查找字符串中第一個出現的指定字符) ● strcmp(比較字符串) ● strcoll(采用目前區域的字符排列次序來比較字符串) ● strcpy(拷貝字符串) ● strcspn(返回字符串中連續不含指定字符串內容的字符數) ● strdup(復制字符串) ● strfry(隨機重組字符串內的字符) ● strlen(返回字符串長度) ● strncasecmp(忽略大小寫比較字符串) ● strncat(連接兩字符串) ● strncmp(比較字符串) ● strncpy(拷貝字符串) ● strpbrk(查找字符串中第一個出現的指定字符) ● strrchr(查找字符串中最后一個出現的指定字符) ● strspn(返回字符串中連續不合指定字符串內容的字符數) ● strstr(在一字符串中查找指定的字符串) ● strtok(分割字符串) |
Soket相關函數● accept(接受socket連線) ● bind(對socket定位) ● connect(建立socket連線) ● endprotoent(結束網絡協議數據的讀取) ● endservent(結束網絡服務數據的讀取) ● gethostbyaddr(由IP地址取得網絡數據) ● gethostbyname(由主機名稱取得網絡數據) ● getprotobyname(由網絡協議名稱取得協議數據) ● getprotobynumber(由網絡協議編號取得協議數據) ● getprotoent(取得網絡協議數據) ● getservbyname(依名稱取得網絡服務的數據) ● getservbyport(依port號碼取得網絡服務的數據) ● getservent(取得主機網絡服務的數據) ● getsockopt(取得socket狀態) ● herror(打印出網絡錯誤原因信息字符串) ● hstrerror(返回網絡錯誤原因的描述字符串) ● htonl(將32位主機字符順序轉換成網絡字符順序) ● htons(將16位主機字符順序轉換成網絡字符順序) ● inet_addr(將網絡地址轉成網絡二進制的數字) ● inet_aton(將網絡地址轉成網絡二進制的數字) ● inet_ntoa(將網絡二進制的數字轉換成網絡地址) ● listen(等待連接) ● ntohl(將32位網絡字符順序轉換成主機字符順序) ● ntohs(將16位網絡字符順序轉換成主機字符順序) ● recv(經socket接收數據) ● recvfrom(經socket接收數據) ● recvmsg(經socket接收數據) ● send(經socket傳送數據) ● sendmsg(經socket傳送數據) ● sendto(經socket傳送數據) ● setprotoent(打開網絡協議的數據文件) ● setservent(打開主機網絡服務的數據文件) ● setsockopt(設置socket狀態) ● shutdown(終止socket通信) ● socket(建立一個socket通信) |
用戶和組函數● cuserid(取得用戶帳號名稱) ● endgrent(關閉組文件) ● endpwent(關閉密碼文件) ● endutent(關閉utmp文件) ● fgetgrent(從指定的文件來讀取組格式) ● fgetpwent(從指定的文件來讀取密碼格式) ● getegid(取得有效的組識別碼) ● geteuid(取得有效的用戶識別碼) ● getgid(取得真實的組識別碼) ● getgrent(從組文件文件中取得帳號的數據) ● getgrgid(從組文件中取得指定gid的數據) ● getgrnan(從組文件中取得指定組的數據) ● getgroups(取得組代碼) ● getlogin(取得登錄的用戶帳號名稱) ● getpw(取得指定用戶的密碼文件數據) ● getpwent(從密碼文件中取得帳號的數據) ● getpwnam(從密碼文件中取得指定帳號的數據) ● getpwuid(從密碼文件中取得指定uid的數據) ● getuid(取得真實的用戶識別碼) ● getutent(從utmp文件中取得帳號登錄數據) ● getutid(從utmp文件中查找特定的記錄) ● getutline(從utmp文件中查找特定的記錄) ● initgroups(初始化組清單) ● logwtmp(將一登錄數據記錄到wtmp文件) ● pututline(將utmp記錄寫入文件) ● setegid(設置有效的組識別碼) ● seteuid(設置有效的用戶識別碼) ● setfsgid(設置文件系統的組識別碼) ● setfsuid(設置文件系統的用戶識別碼) ● setgid(設置真實的組識別碼) ● setgrent(從頭讀取組文件中的組數據) ● setgroups(設置組代碼) ● setpwent(從頭讀取密碼文件中的帳號數據) ● setregid(設置真實及有效的組識別碼) ● setreuid(設置真實及有效的用戶識別碼) ● setuid(設置真實的用戶識別碼) ● setutent(從頭讀取utmp/文件中的登錄數據) ● updwtmp(將一登錄數據記錄到wtmp文件) ● utmpname(設置utmp文件路徑) |
隨機數函數● drand48(產生一個正的浮點型隨機數) ● erand48(產生一個正的浮點型隨機數) ● initstate(建立隨機數狀態數組) ● jrand48(產生一個長整型數隨機數) ● lcong48(設置48位運算的隨機數種子) ● lrand48(產生一個正的長整型隨機數) ● mrand48(產生一個長整型隨機數) ● nrand48(產生一個正的長整型隨機數) ● rand(產生隨機數) ● random(產生隨機數) ● seed48(設置48位運算的隨機數種子) ● setstate(建立隨機數狀態數組) ● srand(設置隨機數種子) ● srand48(設置48位運算的隨機數種子) ● srandom(設置隨機數種子) |
初級I/O函數● close(關閉文件) ● creat(建立文件) ● dup(復制文件描述詞) ● dup2(復制文件描述詞) ● fcntl(文件描述詞操作) ● flock(鎖定文件或解除鎖定) ● fsync(將緩沖區數據寫回磁盤) ● lseek(移動文件的讀寫位置) ● mkstemp(建立唯一的臨時文件) ● open(打開文件) ● read(由己打開的文件讀取數據) ● sync(將緩沖區數據寫回磁盤) ● write(將數據寫入已打開的文件內) |
格式化輸人輸出函數● fprintf(格式化輸出數據至文件) ● fscanf(格式化字符串輸入) ● printf(格式化輸出數據) ● scanf(格式化字符串輸入) ● snprintf(格式化字符串復制) ● sprintf(格式化字符串復制) ● sscanf(格式化字符串輸入) ● vfprintf(格式化輸出數據至文件) ● vfcanf(格式化字符串輸入) ● vprintf(格式化輸出數據) ● vscanf(格式化字符串輸入) ● vsnprintf(格式化字符串復制) ● vsprintf(格式化字符串復制) ● vsscanf(格式化字符串輸入) |
標准I/O函數● clearerr(清除文件流的錯誤旗標) ● fclose(關閉文件) ● fdopen(將文件描述詞轉為文件指針) ● feof(檢查文件流是否讀到了文件尾) ● fflush(更新緩沖區) ● fgetc(由文件中讀取一個字符) ● fgetpos(取得文件流的讀取位置) ● fgets(由文件中讀取一字符串) ● fileno(返回文件流所使用的文件描述詞) ● fopen(打開文件) ● fputc(將一指定字符寫入文件流中) ● fputs(將一指定的字符串寫入文件內) ● fread(從文件流讀取數據) ● freopen(打開文件) ● fseek(移動文件流的讀寫位置) ● fsetpos(移動文件流的讀寫位置) ● ftell(取得文件流的讀取位置) ● fwrite(將數據寫至文件流) ● getc(由文件中讀取一個字符) ● getchar(由標准輸入設備內讀進一字符) ● gets(由標准輸入設備內讀進一字符串) ● mktemp(產生唯一的臨時文件文件名) ● putc(將一指定字符寫入文件中) ● putchar(將指定的字符寫到標准輸出設備) ● puts(將指定的字符串寫到標准輸出設備) ● rewind(重設文件流的讀寫位置為文件開頭) ● setbuf(設置文件流的緩沖區) ● setbuffer(設置文件流的緩沖區) ● setlinebuf(設置文件流為線性緩沖區) ● setvbuf(設置文件流的緩沖區) ● tmpfile(建立臨時文件) ● ungetc(將一指定字符寫回文件流中) |
進程及流程控制● abort(以異常方式結束進程) ● assert(若測試的條件不成立則終止進程) ● atexit(設置程序正常結束前調用的函數) ● execl(執行文件) ● execle(執行文件) ● execlp(從PATH環境變量中查找文件並執行) ● execv(執行文件) ● execve(執行文件) ● execvp(執行文件) ● exit(正常結束進程) ● _exit(結束進程執行) ● fork(建立一個新的進程) ● getpgid(取得進程組識別碼) ● getpgrp(取得進程組識別碼) ● getpid(取得進程識別碼) ● getppid(取得父進程的進程識別碼) ● getpriority(取得程序進程執行優先權) ● longjmp(跳轉到原先setjmp保存的堆棧環境) ● nice(改變進程優先順序) ● on_exit(設置程序正常結束前調用的函數) ● ptrace(進程追蹤) ● setjmp(保存目前堆棧環境) ● setpgid(設置進程組識別碼) ● setpgrp(設置進程組識別碼) ● setpriority(設置程序進程執行優先權) ● siglongjmp(跳轉到原先sigsetjmp保存的堆棧環境) ● sigsetjmp(保存目前堆棧環境) ● system(執行shell命令) ● wait(等待子進程中斷或結束) ● waitpid(等待子進程中斷或結束) |
文件及目錄函數● access(判斷是否具有存取文件的權限) ● alphasort(依字母順序排序目錄結構) ● chdir(改變當前的工作目錄) ● chmod(改變文件的權限) ● chown(改變文件的所有者) ● chroot(改變根目錄) ● closedir(關閉目錄) ● fchdir(改變當前的工作目錄) ● fchmod(改變文件的權限) ● fchown(改變文件的所有者) ● fstat(由文件描述詞取得文件狀態) ● ftruncate(改變文件大小) ● ftw(遍歷目錄樹) ● get_current_dir_name(取得當前的工作目錄) ● getcwd(取得當前的工作目錄) ● getwd(取得當前的工作目錄) ● lchown(改變文件的所有者) ● link(建立文件連接) ● lstat(由文件描述詞取得文件狀態) ● nftw(遍歷目錄樹) ● opendir(打開目錄) ● readdir(讀取目錄) ● readlink(取得符號連接所指的文件) ● realpath(將相對目錄路徑轉換成絕對路徑) ● remove(刪除文件) ● rename(更改文件名稱或位置) ● rewinddir(重設讀取目錄的位置為開頭位置) ● scandir(讀取特定的目錄數據) ● seekdir(設置下回讀取目錄的位置) ● stat(取得文件狀態) ● symlink(建立文件符號連接) ● telldir(取得目錄流的讀取位置) ● truncate(改變文件大小) ● umask(設置建立新文件時的權限遮罩) ● unlink(刪除文件) ● utime(修改文件的存取時間和更改時間) ● utimes(修改文件的存取時間和更改時間) |
正則表達式● regcomp(編譯正則表達式字符串) ● regerror(取得正則搜索的錯誤原因) ● regexec(進行正則表達式的搜索) ● regfree(釋放正則表達式使用的內存) |
動態函數● dlclose(關閉動態函數庫文件) ● dlerror(動態函數錯誤處理) ● dlopen(打開動態函數庫文件) ● dlsym(從共享對象中搜索動態函數) |
管道相關函數● mkfifo(建立具名管道) ● pclose(關閉管道I/O) ● pipe(建立管道) ● popen(建立管道I/O) |
數學計算函數● abs(計算整型數的絕對值) ● acos(取反余弦函數值) ● asin(取反正弦函數值) ● atan(取反正切函數值) ● atan2(取得反正切函數值) ● ceil(取不小於參數的最小整型數) ● cos(取余弦函數值) ● cosh(取雙曲線余弦函數值) ● div(取得兩整型數相除后的商及余數) ● exp(計算指數) ● fabs(計算浮點型數的絕對值) ● frexp(將浮點型數分為底數與指數) ● hypot(計算直角三角形斜邊長) ● labs(計算長整型數的絕對值) ● ldexp(計算2的次方值) ● ldiv(取得兩長整數相除后的商及余數) ● log(計算以e為底的對數值) ● log10(計算以10為底的對數值) ● modf(將浮點型數分解成整數與小數) ● pow(計算次方值) ● sin(取正弦函數值) ● sinh(取雙曲線正弦函數值) ● sqrt(計算平方根值) ● tan(取正切函數值) ● tanh(取雙曲線正切函數值) |
信號函數● alarm(設置信號傳送鬧鍾) ● kill(傳送信號給指定的進程) ● pause(讓進程暫停直到信號出現) ● psignal(列出信號描述和指定字符串) ● raise(傳送信號給目前的進程) ● sigaction(查詢或設置信號處理方式) ● sigaddset(增加一個信號至信號集) ● sigdelset(從信號集里刪除一個信號) ● sigemptyset(初始化信號集) ● sigfillset(將所有信號加入至信號集) ● sigismember(測試某個信號是否已加入至信號集里) ● signal(設置信號處理方式) ● sigpause(暫停直到信號到來) ● sigpending(查詢被擱置的信號) ● sigprocmask(查詢或設置信號遮罩) ● sigsuspend(暫停直到信號到來) ● sleep(讓進程暫停執行一段時間) ● isdigit(測試字符是否為阿拉伯數字) |
數據加密函數● crypt(將密碼或數據編碼) ● getpass(取得一密碼輸入) 其他函數● getopt(分析命令行參數) ● isatty(判斷文件描述詞是否是為終端機) ● select(I/O多工機制) ● ttyname(返回一終端機名稱) |
三、多線程不安全的函數
asctime() basename() catgets() crypt() ctermid() //if passed a non-NULL argument ctime() dbm_clearerr() dbm_close() dbm_delete() dbm_error() dbm_fetch() dbm_firstkey() dbm_nextkey() dbm_open() dbm_store() dirname() dlerror() drand48() ecvt() //[POSIX.1-2001 only (function removed in POSIX.1-2008)] encrypt() endgrent() endpwent() endutxent() fcvt() //[POSIX.1-2001 only (function removed in POSIX.1-2008)] ftw() gcvt() //[POSIX.1-2001 only (function removed in POSIX.1-2008)] getc_unlocked() getchar_unlocked() getdate() getenv() |
getgrent() getgrgid() getgrnam() gethostbyaddr() //[POSIX.1-2001 only (function removed in POSIX.1-2008)] gethostbyname() //[POSIX.1-2001 only (function removed in POSIX.1-2008)] gethostent() getlogin() getnetbyaddr() getnetbyname() getnetent() getopt() getprotobyname() getprotobynumber() getprotoent() getpwent() getpwnam() getpwuid() getservbyname() getservbyport() getservent() getutxent() getutxid() getutxline() gmtime() hcreate() hdestroy() hsearch() inet_ntoa() l64a() lgamma() |
lgammaf() lgammal() localeconv() localtime() lrand48() mrand48() nftw() nl_langinfo() ptsname() putc_unlocked() putchar_unlocked() putenv() pututxline() rand() readdir() setenv() setgrent() setkey() setpwent() setutxent() strerror() strsignal() //[Added in POSIX.1-2008] strtok() system()//[Added in POSIX.1-2008] tmpnam() //if passed a non-NULL argument ttyname() unsetenv() wcrtomb() //if its final argument is NULL wcsrtombs() //if its final argument is NULL wcstombs() wctomb() |