Linux C函數庫參考手冊 [轉自ChinaUnix]
第1章字符測試函數
isalnum(測試字符是否爲英文字母或數字)
isalpha(測試字符是否爲英文字母)
isascii(測試字符是否爲ASCII碼字符)
isblank(測試字符是否爲空格字符)
iscntrl(測試字符是否爲ASCII碼的控制字符)
isdigit(測試字符是否爲阿拉伯數字)
isgraph(測試字符是否爲可打印字符)
islower(測試字符是否爲小寫英文字母)
isprint(測試字符是否爲可打印字符)
isspace(測試字符是否爲空格字符)
ispunct(測試字符是否爲標點符號或特殊符號)
isupper(測試字符是否爲大寫英文字母)
isxdigit(測試字符是否爲16進制數字)
第2章數據轉換函數
atof(將字符串轉換成浮點型數)1
atoi(將字符串轉換成整型數)
atol(將字符串轉換成長整型數)
ecvt(將浮點型數轉換成字符串,19取四捨五入)
fcvt(將浮點型數轉換爲字符串,20取四捨五入)
gcvt(將浮點型數轉換爲字符串,21取四捨五入)第3章內存配置函數
alloca(配置內存空間)
brk(改變數據字節的範圍)
calloc(配置內存空間)
free(釋放原先配置的內存)
getpagesize(取得內存分頁大小)
malloc(配置內存空間)
mmap(創建內存映射)
munmap(解除內存映射)
realloc(更改己配置的內存空間)
sbrk(增長程序可用的數據空間)
第4章時間函數
asctime(將時間和日期以字符串格式表示)
clock(取得進程佔用CPU的大約時間)
ctime(將時間和日期以字符串格式表示)
difftime(計算時間差距)
ftime(取得目前的時間和日期)
gettimeofday(取得目前的時間)
gmtime(取得目前的時間和日期)
localtime(取得當地目前的時間和日期)
mktime(將時間結構數據轉換成通過的秒數)
settimeofday(設置目前的時間)
strftime(格式化日期和時間)
time(取得目前的時間)
tzset(設置時區以供時間轉換)
第5章字符串處理函數
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(分割字符串)
第6章數學計算函數
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(取雙曲線正切函數值)
第7章用戶和組函數
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文件路徑)
第8章數據加密函數
crypt(將密碼或數據編碼)
getpass(取得一密碼輸入)
第9章數據結構函數
bsearch(二元搜索)
hcreate(創建哈希表)
hdestory(刪除哈希表)
hsearch(哈希表搜索)
insque(加入一項目至隊列中)
lfind(線性搜索)
lsearch(線性搜索)
qsort(利用快速排序法排列數組)
rremque(從隊列中刪除一項目)
tdelete(從二叉樹中刪除數據)
tfind(搜索二叉樹)
tsearch(二叉樹)
twalk(走訪二叉樹)
第10章隨機數函數
drand48(產生一個正的浮點型隨機數)
erand48(產生一個正的浮點型隨機數)
initstate(創建隨機數狀態數組)
jrand48(產生一個長整型數隨機數)
lcong48(設置48位運算的隨機數種子)
lrand48(產生一個正的長整型隨機數)
mrand48(產生一個長整型隨機數)
nrand48(產生一個正的長整型隨機數)
rand(產生隨機數)
random(產生隨機數)
seed48(設置48位運算的隨機數種子)
setstate(創建隨機數狀態數組)
srand(設置隨機數種子)
srand48(設置48位運算的隨機數種子)
srandom(設置隨機數種子)
第11章初級I/O函數
close(關閉文件)
creat(創建文件)
dup(複製文件描述詞)
dup2(複製文件描述詞)
fcntl(文件描述詞操做)
flock(鎖定文件或解除鎖定)
fsync(將緩衝區數據寫回磁盤)
lseek(移動文件的讀寫位置)
mkstemp(創建惟一的臨時文件)
open(打開文件)
read(由己打開的文件讀取數據)
sync(將緩衝區數據寫回磁盤)
write(將數據寫入已打開的文件內)
第12章標準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(將一指定字符寫回文件流中)
第13章進程及流程控制
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(等待子進程中斷或結束)
第14章格式化輸人輸出函數
fprintf(格式化輸出數據至文件)
fscanf(格式化字符串輸入)
printf(格式化輸出數據)
scanf(格式化字符串輸入)
snprintf(格式化字符串複製)
sprintf(格式化字符串複製)
sscanf(格式化字符串輸入)
vfprintf(格式化輸出數據至文件)
vfcanf(格式化字符串輸入)
vprintf(格式化輸出數據)
vscanf(格式化字符串輸入)
vsnprintf(格式化字符串複製)
vsprintf(格式化字符串複製)
vsscanf(格式化字符串輸入)
第15章文件及目錄函數
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(修改文件的存取時間和更改時間)
第16章 信號函數
alarm(設置信號傳送鬧鐘)
kill(傳送信號給指定的進程)
pause(讓進程暫停直到信號出現)
psignal(列出信號描述和指定字符串)
raise(傳送信號給目前的進程)
sigaction(查詢或設置信號處理方式)
sigaddset(增長一個信號至信號集)
sigdelset(從信號集裏刪除一個信號)
sigemptyset(初始化信號集)
sigfillset(將全部信號加入至信號集)
sigismember(測試某個信號是否已加入至信號集裏)
signal(設置信號處理方式)
sigpause(暫停直到信號到來)
sigpending(查詢被擱置的信號)
sigprocmask(查詢或設置信號遮罩)
sigsuspend(暫停直到信號到來)
sleep(讓進程暫停執行一段時間)
isdigit(測試字符是否爲阿拉伯數字)
第17章錯誤處理函數
ferror(檢查文件流是否有錯誤發生)
perror(打印出錯誤緣由信息字符串)
streror(返回錯誤緣由的描述字符串)
第18章管道相關函數
mkfifo(創建具名管道)
pclose(關閉管道I/O)
pipe(創建管道)
popen(創建管道I/O)
第19章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通訊)
第20章進程通訊(IPC)函數
ftok(將文件路徑和計劃代號轉爲SystemcVIPCkey)
msgctl(控制信息隊列的運做)
msgget(創建信息隊列)
msgrcv(從信息隊列讀取信息)
msgsnd(將信息送入信息隊列)
semctl(控制信號隊列的操做)
semget(配置信號隊列)
semop(信號處理)
shmat(attach共享內存)
shmctl(控制共享內存的操做)
shmdt(detach共享內存)
shmget(配置共享內存)
第21章記錄函數
closelog(關閉信息記錄)
openlog(準備作信息記錄)
syslog(將信息記錄至系統日誌文件)
第22章環境變量函數
getenv(取得環境變量內容)
putenv(改變或增長環境變量)
setenv(改變或增長環境變量)
unsetenv(清除環境變量內容)
第23章正則表達式
regcomp(編譯正則表達式字符串)
regerror(取得正則搜索的錯誤緣由)
regexec(進行正則表達式的搜索)
regfree(釋放正則表達式使用的內存)
第24章動態函數
dlclose(關閉動態函數庫文件)
dlerror(動態函數錯誤處理)
dlopen(打開動態函數庫文件)
dlsym(從共享對象中搜索動態函數)
第25章其餘函數
getopt(分析命令行參數)
isatty(判斷文件描述詞是不是爲終端機)
select(I/O多工機制)
ttyname(返回一終端機名稱)linux
Linux 操做系統中函數庫路徑以下:
/lib: //系統必備共享庫
/usr/lib: //標準共享庫和靜態庫
/usr/i486-linux-libc5/lib://libc5 兼容性函數庫
/usr/X11R6/lib: //X11R6 的函數庫
/usr/local/lib: //本地函數庫
頭文件路徑以下:
/usr/include: //系統頭文件
/usr/local/include: //本地頭文件
共享庫及其相關配置文件和管理命令以下:
/etc/ld.so.conf: //包含共享庫的搜索位置
ldconfig: //共享庫管理工具,通常在更新了共享庫以後要運行該命令
ldd: //可查看可執行文件所使用的共享庫
在進行軟件開發時,通常都須要使用庫文件,大量使用庫文件有如下兩個主要緣由:
(1)爲了便於編程,對於部分常常使用的函數,相應的開發語言都提供了對應的庫文件支持。
(2)隱藏具體的函數實現。程序員在使用庫文件時,只須要包含所須要函數所在的頭文件,而沒必要關心該函數的具體實現。對於商業軟件來講,知識產權獲得了必定程度的保護。
在任何編程環境中,庫文件都是一些預先編譯好的函數的集合,這些函數以二進制代碼形式存儲在庫文件中。用戶要使用這些函數,只須要包含這些庫文件便可。通常來講,要從庫文件得到相應的函數有兩種辦法。
(1)在編譯時將庫中相應函數的二進制映像代碼直接拷貝到當前編譯的程序中,當前程序在運行時獨立運行。這種庫即靜態庫,在 Linux 中,以.a 爲後綴的爲靜態庫,如 libtest.a。
(2)在編譯時只引用庫中相應函數的二進制映像代碼的入口位置(即不直接拷貝),該程序在運行時從共享庫文件中讀出該函數代碼(這須要首先將共享庫加載到內存中),從而間接引用,這種庫即共享庫,在 Linux 操做系統中,以 libxxx.so.x.x 爲格式命名。git