以下是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
文件加/解鎖
poll
I/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
控制磁盤配額
三、系統控制
ioctl
I/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控制
socketcall
socket系統調用
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
ssetmask
ANSI C的信號處理函數,作用類似sigaction
2、消息
msgctl
消息控制操作
msgget
獲取消息隊列
msgsnd
發消息
msgrcv
取消息
3、管道
pipe
創建管道
4、信號量
semctl
信號量控制
semget
獲取一組信號量
semop
信號量操作
5、共享內存
shmctl 控制共享內存 shmget 獲取共享內存 shmat 連接共享內存 shmdt 拆卸共享內存