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

 |


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


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


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


| 回頁(yè)首 |
|
五、網(wǎng)絡(luò )管理
getdomainname | 取域名 |
setdomainname | 設置域名 |
gethostid | 獲取主機標識號 |
sethostid | 設置主機標識號 |
gethostname | 獲取本主機名稱(chēng) |
sethostname | 設置主機名稱(chēng) |


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


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


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