本文列出了大部分常見的Linux系統(tǒng)調(diào)用,并附有簡(jiǎn)要中文說(shuō)明。
以下是Linux系統(tǒng)調(diào)用的一個(gè)列表,包含了大部分常用系統(tǒng)調(diào)用和由系統(tǒng)調(diào)用派生出的的函數(shù)。這可能是你在互聯(lián)網(wǎng)上所能看到的唯一一篇中文注釋的Linux系統(tǒng)調(diào)用列表,即使是簡(jiǎn)單的字母序英文列表,能做到這么完全也是很罕見的。
按照慣例,這個(gè)列表以man pages第2節(jié),即系統(tǒng)調(diào)用節(jié)為藍(lán)本。按照筆者的理解,對(duì)其作了大致的分類,同時(shí)也作了一些小小的修改,刪去了幾個(gè)僅供內(nèi)核使用,不允許用戶調(diào)用的系統(tǒng)調(diào)用,對(duì)個(gè)別本人稍覺(jué)不妥的地方作了一些小的修改,并對(duì)所有列出的系統(tǒng)調(diào)用附上簡(jiǎn)要注釋。
其中有一些函數(shù)的作用完全相同,只是參數(shù)不同。(可能很多熟悉C 朋友馬上就能聯(lián)想起函數(shù)重載,但是別忘了Linux核心是用C語(yǔ)言寫的,所以只能取成不同的函數(shù)名)。還有一些函數(shù)已經(jīng)過(guò)時(shí),被新的更好的函數(shù)所代替了(gcc在鏈接這些函數(shù)時(shí)會(huì)發(fā)出警告),但因?yàn)榧嫒莸脑蜻€保留著,這些函數(shù)我會(huì)在前面標(biāo)上“*”號(hào)以示區(qū)別。
一、進(jìn)程控制:
| fork | 創(chuàng)建一個(gè)新進(jìn)程 |
| clone | 按指定條件創(chuàng)建子進(jìn)程 |
| execve | 運(yùn)行可執(zhí)行文件 |
| exit | 中止進(jìn)程 |
| _exit | 立即中止當(dāng)前進(jìn)程 |
| getdtablesize | 進(jìn)程所能打開的最大文件數(shù) |
| getpgid | 獲取指定進(jìn)程組標(biāo)識(shí)號(hào) |
| setpgid | 設(shè)置指定進(jìn)程組標(biāo)志號(hào) |
| getpgrp | 獲取當(dāng)前進(jìn)程組標(biāo)識(shí)號(hào) |
| setpgrp | 設(shè)置當(dāng)前進(jìn)程組標(biāo)志號(hào) |
| getpid | 獲取進(jìn)程標(biāo)識(shí)號(hào) |
| getppid | 獲取父進(jìn)程標(biāo)識(shí)號(hào) |
| getpriority | 獲取調(diào)度優(yōu)先級(jí) |
| setpriority | 設(shè)置調(diào)度優(yōu)先級(jí) |
| modify_ldt | 讀寫進(jìn)程的本地描述表 |
| nanosleep | 使進(jìn)程睡眠指定的時(shí)間 |
| nice | 改變分時(shí)進(jìn)程的優(yōu)先級(jí) |
| pause | 掛起進(jìn)程,等待信號(hào) |
| personality | 設(shè)置進(jìn)程運(yùn)行域 |
| prctl | 對(duì)進(jìn)程進(jìn)行特定操作 |
| ptrace | 進(jìn)程跟蹤 |
| sched_get_priority_max | 取得靜態(tài)優(yōu)先級(jí)的上限 |
| sched_get_priority_min | 取得靜態(tài)優(yōu)先級(jí)的下限 |
| sched_getparam | 取得進(jìn)程的調(diào)度參數(shù) |
| sched_getscheduler | 取得指定進(jìn)程的調(diào)度策略 |
| sched_rr_get_interval | 取得按RR算法調(diào)度的實(shí)時(shí)進(jìn)程的時(shí)間片長(zhǎng)度 |
| sched_setparam | 設(shè)置進(jìn)程的調(diào)度參數(shù) |
| sched_setscheduler | 設(shè)置指定進(jìn)程的調(diào)度策略和參數(shù) |
| sched_yield | 進(jìn)程主動(dòng)讓出處理器,并將自己等候調(diào)度隊(duì)列隊(duì)尾 |
| vfork | 創(chuàng)建一個(gè)子進(jìn)程,以供執(zhí)行新程序,常與execve等同時(shí)使用 |
| wait | 等待子進(jìn)程終止 |
| wait3 | 參見wait |
| waitpid | 等待指定子進(jìn)程終止 |
| wait4 | 參見waitpid |
| capget | 獲取進(jìn)程權(quán)限 |
| capset | 設(shè)置進(jìn)程權(quán)限 |
| getsid | 獲取會(huì)晤標(biāo)識(shí)號(hào) |
| setsid | 設(shè)置會(huì)晤標(biāo)識(shí)號(hào) |

 |


| 回頁(yè)首 |
|
二、文件系統(tǒng)控制
1、文件讀寫操作
| fcntl | 文件控制 |
| open | 打開文件 |
| creat | 創(chuàng)建新文件 |
| close | 關(guān)閉文件描述字 |
| read | 讀文件 |
| write | 寫文件 |
| readv | 從文件讀入數(shù)據(jù)到緩沖數(shù)組中 |
| writev | 將緩沖數(shù)組里的數(shù)據(jù)寫入文件 |
| pread | 對(duì)文件隨機(jī)讀 |
| pwrite | 對(duì)文件隨機(jī)寫 |
| lseek | 移動(dòng)文件指針 |
| _llseek | 在64位地址空間里移動(dòng)文件指針 |
| dup | 復(fù)制已打開的文件描述字 |
| dup2 | 按指定條件復(fù)制文件描述字 |
| flock | 文件加/解鎖 |
| poll | I/O多路轉(zhuǎn)換 |
| truncate | 截?cái)辔募?/TD> |
| ftruncate | 參見truncate |
| umask | 設(shè)置文件權(quán)限掩碼 |
| fsync | 把文件在內(nèi)存中的部分寫回磁盤 |
2、文件系統(tǒng)操作
| access | 確定文件的可存取性 |
| chdir | 改變當(dāng)前工作目錄 |
| fchdir | 參見chdir |
| chmod | 改變文件方式 |
| fchmod | 參見chmod |
| chown | 改變文件的屬主或用戶組 |
| fchown | 參見chown |
| lchown | 參見chown |
| chroot | 改變根目錄 |
| stat | 取文件狀態(tài)信息 |
| lstat | 參見stat |
| fstat | 參見stat |
| statfs | 取文件系統(tǒng)信息 |
| fstatfs | 參見statfs |
| readdir | 讀取目錄項(xiàng) |
| getdents | 讀取目錄項(xiàng) |
| mkdir | 創(chuàng)建目錄 |
| mknod | 創(chuàng)建索引節(jié)點(diǎn) |
| rmdir | 刪除目錄 |
| rename | 文件改名 |
| link | 創(chuàng)建鏈接 |
| symlink | 創(chuàng)建符號(hào)鏈接 |
| unlink | 刪除鏈接 |
| readlink | 讀符號(hào)鏈接的值 |
| mount | 安裝文件系統(tǒng) |
| umount | 卸下文件系統(tǒng) |
| ustat | 取文件系統(tǒng)信息 |
| utime | 改變文件的訪問(wèn)修改時(shí)間 |
| utimes | 參見utime |
| quotactl | 控制磁盤配額 |


| 回頁(yè)首 |
|
三、系統(tǒng)控制
| ioctl | I/O總控制函數(shù) |
| _sysctl | 讀/寫系統(tǒng)參數(shù) |
| acct | 啟用或禁止進(jìn)程記賬 |
| getrlimit | 獲取系統(tǒng)資源上限 |
| setrlimit | 設(shè)置系統(tǒng)資源上限 |
| getrusage | 獲取系統(tǒng)資源使用情況 |
| uselib | 選擇要使用的二進(jìn)制函數(shù)庫(kù) |
| ioperm | 設(shè)置端口I/O權(quán)限 |
| iopl | 改變進(jìn)程I/O權(quán)限級(jí)別 |
| outb | 低級(jí)端口操作 |
| reboot | 重新啟動(dòng) |
| swapon | 打開交換文件和設(shè)備 |
| swapoff | 關(guān)閉交換文件和設(shè)備 |
| bdflush | 控制bdflush守護(hù)進(jìn)程 |
| sysfs | 取核心支持的文件系統(tǒng)類型 |
| sysinfo | 取得系統(tǒng)信息 |
| adjtimex | 調(diào)整系統(tǒng)時(shí)鐘 |
| alarm | 設(shè)置進(jìn)程的鬧鐘 |
| getitimer | 獲取計(jì)時(shí)器值 |
| setitimer | 設(shè)置計(jì)時(shí)器值 |
| gettimeofday | 取時(shí)間和時(shí)區(qū) |
| settimeofday | 設(shè)置時(shí)間和時(shí)區(qū) |
| stime | 設(shè)置系統(tǒng)日期和時(shí)間 |
| time | 取得系統(tǒng)時(shí)間 |
| times | 取進(jìn)程運(yùn)行時(shí)間 |
| uname | 獲取當(dāng)前UNIX系統(tǒng)的名稱、版本和主機(jī)等信息 |
| vhangup | 掛起當(dāng)前終端 |
| nfsservctl | 對(duì)NFS守護(hù)進(jìn)程進(jìn)行控制 |
| vm86 | 進(jìn)入模擬8086模式 |
| create_module | 創(chuàng)建可裝載的模塊項(xiàng) |
| delete_module | 刪除可裝載的模塊項(xiàng) |
| init_module | 初始化模塊 |
| query_module | 查詢模塊信息 |
| *get_kernel_syms | 取得核心符號(hào),已被query_module代替 |


| 回頁(yè)首 |
|
四、內(nèi)存管理
| brk | 改變數(shù)據(jù)段空間的分配 |
| sbrk | 參見brk |
| mlock | 內(nèi)存頁(yè)面加鎖 |
| munlock | 內(nèi)存頁(yè)面解鎖 |
| mlockall | 調(diào)用進(jìn)程所有內(nèi)存頁(yè)面加鎖 |
| munlockall | 調(diào)用進(jìn)程所有內(nèi)存頁(yè)面解鎖 |
| mmap | 映射虛擬內(nèi)存頁(yè) |
| munmap | 去除內(nèi)存頁(yè)映射 |
| mremap | 重新映射虛擬內(nèi)存地址 |
| msync | 將映射內(nèi)存中的數(shù)據(jù)寫回磁盤 |
| mprotect | 設(shè)置內(nèi)存映像保護(hù) |
| getpagesize | 獲取頁(yè)面大小 |
| sync | 將內(nèi)存緩沖區(qū)數(shù)據(jù)寫回硬盤 |
| cacheflush | 將指定緩沖區(qū)中的內(nèi)容寫回磁盤 |


| 回頁(yè)首 |
|
五、網(wǎng)絡(luò)管理
| getdomainname | 取域名 |
| setdomainname | 設(shè)置域名 |
| gethostid | 獲取主機(jī)標(biāo)識(shí)號(hào) |
| sethostid | 設(shè)置主機(jī)標(biāo)識(shí)號(hào) |
| gethostname | 獲取本主機(jī)名稱 |
| sethostname | 設(shè)置主機(jī)名稱 |


| 回頁(yè)首 |
|
六、socket控制
| socketcall | socket系統(tǒng)調(diào)用 |
| socket | 建立socket |
| bind | 綁定socket到端口 |
| connect | 連接遠(yuǎn)程主機(jī) |
| accept | 響應(yīng)socket連接請(qǐng)求 |
| send | 通過(guò)socket發(fā)送信息 |
| sendto | 發(fā)送UDP信息 |
| sendmsg | 參見send |
| recv | 通過(guò)socket接收信息 |
| recvfrom | 接收UDP信息 |
| recvmsg | 參見recv |
| listen | 監(jiān)聽socket端口 |
| select | 對(duì)多路同步I/O進(jìn)行輪詢 |
| shutdown | 關(guān)閉socket上的連接 |
| getsockname | 取得本地socket名字 |
| getpeername | 獲取通信對(duì)方的socket名字 |
| getsockopt | 取端口設(shè)置 |
| setsockopt | 設(shè)置端口參數(shù) |
| sendfile | 在文件或端口間傳輸數(shù)據(jù) |
| socketpair | 創(chuàng)建一對(duì)已聯(lián)接的無(wú)名socket |


| 回頁(yè)首 |
|
七、用戶管理
| getuid | 獲取用戶標(biāo)識(shí)號(hào) |
| setuid | 設(shè)置用戶標(biāo)志號(hào) |
| getgid | 獲取組標(biāo)識(shí)號(hào) |
| setgid | 設(shè)置組標(biāo)志號(hào) |
| getegid | 獲取有效組標(biāo)識(shí)號(hào) |
| setegid | 設(shè)置有效組標(biāo)識(shí)號(hào) |
| geteuid | 獲取有效用戶標(biāo)識(shí)號(hào) |
| seteuid | 設(shè)置有效用戶標(biāo)識(shí)號(hào) |
| setregid | 分別設(shè)置真實(shí)和有效的的組標(biāo)識(shí)號(hào) |
| setreuid | 分別設(shè)置真實(shí)和有效的用戶標(biāo)識(shí)號(hào) |
| getresgid | 分別獲取真實(shí)的,有效的和保存過(guò)的組標(biāo)識(shí)號(hào) |
| setresgid | 分別設(shè)置真實(shí)的,有效的和保存過(guò)的組標(biāo)識(shí)號(hào) |
| getresuid | 分別獲取真實(shí)的,有效的和保存過(guò)的用戶標(biāo)識(shí)號(hào) |
| setresuid | 分別設(shè)置真實(shí)的,有效的和保存過(guò)的用戶標(biāo)識(shí)號(hào) |
| setfsgid | 設(shè)置文件系統(tǒng)檢查時(shí)使用的組標(biāo)識(shí)號(hào) |
| setfsuid | 設(shè)置文件系統(tǒng)檢查時(shí)使用的用戶標(biāo)識(shí)號(hào) |
| getgroups | 獲取后補(bǔ)組標(biāo)志清單 |
| setgroups | 設(shè)置后補(bǔ)組標(biāo)志清單 |


| 回頁(yè)首 |
|
八、進(jìn)程間通信
1、信號(hào)
| sigaction | 設(shè)置對(duì)指定信號(hào)的處理方法 |
| sigprocmask | 根據(jù)參數(shù)對(duì)信號(hào)集中的信號(hào)執(zhí)行阻塞/解除阻塞等操作 |
| sigpending | 為指定的被阻塞信號(hào)設(shè)置隊(duì)列 |
| sigsuspend | 掛起進(jìn)程等待特定信號(hào) |
| signal | 參見signal |
| kill | 向進(jìn)程或進(jìn)程組發(fā)信號(hào) |
| *sigblock | 向被阻塞信號(hào)掩碼中添加信號(hào),已被sigprocmask代替 |
| *siggetmask | 取得現(xiàn)有阻塞信號(hào)掩碼,已被sigprocmask代替 |
| *sigsetmask | 用給定信號(hào)掩碼替換現(xiàn)有阻塞信號(hào)掩碼,已被sigprocmask代替 |
| *sigmask | 將給定的信號(hào)轉(zhuǎn)化為掩碼,已被sigprocmask代替 |
| *sigpause | 作用同sigsuspend,已被sigsuspend代替 |
| sigvec | 為兼容BSD而設(shè)的信號(hào)處理函數(shù),作用類似sigaction |
| ssetmask | ANSI C的信號(hào)處理函數(shù),作用類似sigaction |
2、消息
| msgctl | 消息控制操作 |
| msgget | 獲取消息隊(duì)列 |
| msgsnd | 發(fā)消息 |
| msgrcv | 取消息 |
3、管道
4、信號(hào)量
| semctl | 信號(hào)量控制 |
| semget | 獲取一組信號(hào)量 |
| semop | 信號(hào)量操作 |
5、共享內(nèi)存
| shmctl | 控制共享內(nèi)存 |
| shmget | 獲取共享內(nèi)存 |
| shmat | 連接共享內(nèi)存 |
| shmdt | 拆卸共享內(nèi)存 |
評(píng)論