Linux系統呼叫列表

Augusdi發表於2015-04-27


以下是Linux系統呼叫的一個列表,包含了大部分常用系統呼叫和由系統呼叫派生出的的函式。這可能是你在網際網路上所能看到的唯一一篇中文註釋的Linux系統呼叫列表,即使是簡單的字母序英文列表,能做到這麼完全也是很罕見的。

按照慣例,這個列表以man pages第2節,即系統呼叫節為藍本。按照筆者的理解,對其作了大致的分類,同時也作了一些小小的修改,刪去了幾個僅供核心使用,不允許使用者呼叫的系統呼叫,對個別本人稍覺不妥的地方作了一些小的修改,並對所有列出的系統呼叫附上簡要註釋。

其中有一些函式的作用完全相同,只是引數不同。(可能很多熟悉C++朋友馬上就能聯想起函式過載,但是別忘了Linux核心是用C語言寫的,所以只能取成不同的函式名)。還有一些函式已經過時,被新的更好的函式所代替了(gcc在連結這些函式時會發出警告),但因為相容的原因還保留著,這些函式我會在前面標上“*”號以示區別。

一、程式控制:

fork建立一個新程式
clone按指定條件建立子程式
execve執行可執行檔案
exit中止程式
_exit立即中止當前程式
getdtablesize程式所能開啟的最大檔案數
getpgid獲取指定程式組標識號
setpgid設定指定程式組標誌號
getpgrp獲取當前程式組標識號
setpgrp設定當前程式組標誌號
getpid獲取程式標識號
getppid獲取父程式標識號
getpriority獲取排程優先順序
setpriority設定排程優先順序
modify_ldt讀寫程式的本地描述表
nanosleep使程式睡眠指定的時間
nice改變分時程式的優先順序
pause掛起程式,等待訊號
personality設定程式執行域
prctl對程式進行特定操作
ptrace程式跟蹤
sched_get_priority_max取得靜態優先順序的上限
sched_get_priority_min取得靜態優先順序的下限
sched_getparam取得程式的排程引數
sched_getscheduler取得指定程式的排程策略
sched_rr_get_interval取得按RR演算法排程的實時程式的時間片長度
sched_setparam設定程式的排程引數
sched_setscheduler設定指定程式的排程策略和引數
sched_yield程式主動讓出處理器,並將自己等候排程佇列隊尾
vfork建立一個子程式,以供執行新程式,常與execve等同時使用
wait等待子程式終止
wait3參見wait
waitpid等待指定子程式終止
wait4參見waitpid
capget獲取程式許可權
capset設定程式許可權
getsid獲取會晤標識號
setsid設定會晤標識號

 

二、檔案系統控制

1、檔案讀寫操作

fcntl檔案控制
open開啟檔案
creat建立新檔案
close關閉檔案描述字
read讀檔案
write寫檔案
readv從檔案讀入資料到緩衝陣列中
writev將緩衝陣列裡的資料寫入檔案
pread對檔案隨機讀
pwrite對檔案隨機寫
lseek移動檔案指標
_llseek在64位地址空間裡移動檔案指標
dup複製已開啟的檔案描述字
dup2按指定條件複製檔案描述字
flock檔案加/解鎖
pollI/O多路轉換
truncate截斷檔案
ftruncate參見truncate
umask設定檔案許可權掩碼
fsync把檔案在記憶體中的部分寫回磁碟


2、檔案系統操作

access確定檔案的可存取性
chdir改變當前工作目錄
fchdir參見chdir
chmod改變檔案方式
fchmod參見chmod
chown改變檔案的屬主或使用者組
fchown參見chown
lchown參見chown
chroot改變根目錄
stat取檔案狀態資訊
lstat參見stat
fstat參見stat
statfs取檔案系統資訊
fstatfs參見statfs
readdir讀取目錄項
getdents讀取目錄項
mkdir建立目錄
mknod建立索引節點
rmdir刪除目錄
rename檔案改名
link建立連結
symlink建立符號連結
unlink刪除連結
readlink讀符號連結的值
mount安裝檔案系統
umount卸下檔案系統
ustat取檔案系統資訊
utime改變檔案的訪問修改時間
utimes參見utime
quotactl控制磁碟配額

 

三、系統控制

ioctlI/O總控制函式
_sysctl讀/寫系統引數
acct啟用或禁止程式記賬
getrlimit獲取系統資源上限
setrlimit設定系統資源上限
getrusage獲取系統資源使用情況
uselib選擇要使用的二進位制函式庫
ioperm設定埠I/O許可權
iopl改變程式I/O許可權級別
outb低階埠操作
reboot重新啟動
swapon開啟交換檔案和裝置
swapoff關閉交換檔案和裝置
bdflush控制bdflush守護程式
sysfs取核心支援的檔案系統型別
sysinfo取得系統資訊
adjtimex調整系統時鐘
alarm設定程式的鬧鐘
getitimer獲取計時器值
setitimer設定計時器值
gettimeofday取時間和時區
settimeofday設定時間和時區
stime設定系統日期和時間
time取得系統時間
times取程式執行時間
uname獲取當前UNIX系統的名稱、版本和主機等資訊
vhangup掛起當前終端
nfsservctl對NFS守護程式進行控制
vm86進入模擬8086模式
create_module建立可裝載的模組項
delete_module刪除可裝載的模組項
init_module初始化模組
query_module查詢模組資訊
*get_kernel_syms取得核心符號,已被query_module代替

 

四、記憶體管理

brk改變資料段空間的分配
sbrk參見brk
mlock記憶體頁面加鎖
munlock記憶體頁面解鎖
mlockall呼叫程式所有記憶體頁面加鎖
munlockall呼叫程式所有記憶體頁面解鎖
mmap對映虛擬記憶體頁
munmap去除記憶體頁對映
mremap重新對映虛擬記憶體地址
msync將對映記憶體中的資料寫回磁碟
mprotect設定記憶體映像保護
getpagesize獲取頁面大小
sync將記憶體緩衝區資料寫回硬碟
cacheflush將指定緩衝區中的內容寫回磁碟

 

五、網路管理

getdomainname取域名
setdomainname設定域名
gethostid獲取主機標識號
sethostid設定主機標識號
gethostname獲取本主機名稱
sethostname設定主機名稱

 

六、socket控制

socketcallsocket系統呼叫
socket建立socket
bind繫結socket到埠
connect連線遠端主機
accept響應socket連線請求
send通過socket傳送資訊
sendto傳送UDP資訊
sendmsg參見send
recv通過socket接收資訊
recvfrom接收UDP資訊
recvmsg參見recv
listen監聽socket埠
select對多路同步I/O進行輪詢
shutdown關閉socket上的連線
getsockname取得本地socket名字
getpeername獲取通訊對方的socket名字
getsockopt取埠設定
setsockopt設定埠引數
sendfile在檔案或埠間傳輸資料
socketpair建立一對已聯接的無名socket

七、使用者管理

getuid獲取使用者標識號
setuid設定使用者標誌號
getgid獲取組標識號
setgid設定組標誌號
getegid獲取有效組標識號
setegid設定有效組標識號
geteuid獲取有效使用者標識號
seteuid設定有效使用者標識號
setregid分別設定真實和有效的的組標識號
setreuid分別設定真實和有效的使用者標識號
getresgid分別獲取真實的,有效的和儲存過的組標識號
setresgid分別設定真實的,有效的和儲存過的組標識號
getresuid分別獲取真實的,有效的和儲存過的使用者標識號
setresuid分別設定真實的,有效的和儲存過的使用者標識號
setfsgid設定檔案系統檢查時使用的組標識號
setfsuid設定檔案系統檢查時使用的使用者標識號
getgroups獲取後補組標誌清單
setgroups設定後補組標誌清單

 

八、程式間通訊

 

ipc程式間通訊總控制呼叫


1、訊號

sigaction設定對指定訊號的處理方法
sigprocmask根據引數對訊號集中的訊號執行阻塞/解除阻塞等操作
sigpending為指定的被阻塞訊號設定佇列
sigsuspend掛起程式等待特定訊號
signal參見signal
kill向程式或程式組發訊號
*sigblock向被阻塞訊號掩碼中新增訊號,已被sigprocmask代替
*siggetmask取得現有阻塞訊號掩碼,已被sigprocmask代替
*sigsetmask用給定訊號掩碼替換現有阻塞訊號掩碼,已被sigprocmask代替
*sigmask將給定的訊號轉化為掩碼,已被sigprocmask代替
*sigpause作用同sigsuspend,已被sigsuspend代替
sigvec為相容BSD而設的訊號處理函式,作用類似sigaction
ssetmaskANSI C的訊號處理函式,作用類似sigaction


2、訊息

msgctl訊息控制操作
msgget獲取訊息佇列
msgsnd發訊息
msgrcv取訊息


3、管道

pipe建立管道


4、訊號量

semctl訊號量控制
semget獲取一組訊號量
semop訊號量操作


5、共享記憶體

shmctl控制共享記憶體
shmget獲取共享記憶體
shmat連線共享記憶體
shmdt拆卸共享記憶體

 

參考資料

  • Linux man pages

  • Advanced Programming in the UNIX Environment, W. Richard Stevens, 1993

 

轉自:http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html

http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316695.html

相關文章