Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 系統調用完整分類參考手冊 (中文註釋版)

編輯:Linux 教學

前言

系統調用是用戶態程序請求內核服務的唯一接口。本文依據 man pages 第 2 節,將 300+ 系統調用按功能域分為八大類,附上中文註釋與典型使用場景,供系統程序員、內核開發者、運維工程師查閱。

一、進程控制

調用功能典型場景
fork()創建子進程 (複製地址空間)並發服務器、Shell
clone()細粒度創建線程/進程pthread_create 底層實現
vfork()創建子進程共享地址空間緊接 exec 時優化
execve()加載執行新程式所有 exec 族函數最終調用
exit() / _exit()正常/立即終止進程_exit 繞過 stdio 清理
wait() / waitpid() / wait4()等待子進程狀態變化回收殭屍進程
getpid() / getppid()獲取進程/父進程 ID日誌標識、鎖文件命名
getuid() / geteuid() / getgid() / getegid()獲取真實/有效 用戶/組 ID權限檢查
setuid() / setgid() / setreuid() / setregid()設置用戶/組 ID特權降權、Setuid 程序
getpriority() / setpriority()獲取/設置調度優先級nice 值調整
nice()修改分時進程優先級舊版兼容
sched_* 系列實時調度策略/參數設置SCHED_FIFO/RR/DEADLINE
nanosleep()高精度休眠定時任務、限流
pause()掛起等待信號信號驅動主循環
ptrace()進程跟蹤調試器、strace 實現
prctl()進程特定操作 (名稱、seccomp、cap 等)設置進程名、限制系統調用
capget() / capset()獲取/設置進程能力最小特權原則
personality()設置進程執行域 (兼容模式)運行舊版二進制
getsid() / setsid()獲取/創建會話守護進程脫離終端
modify_ldt()讀寫局部描述符表線程局部存儲 (TLS) 底層

二、文件系統控制

1. 文件讀寫操作

調用功能備註
open() / creat()打開/創建文件返回 FD
close()關閉文件描述符
read() / write()讀/寫文件阻塞 I/O 基礎
pread() / pwrite()隨機讀寫 (不改偏移量)多線程並發讀寫同一文件
readv() / writev()分散/聚集 I/O單次系統調用處理多緩衝區
lseek() / _llseek()移動文件偏移量_llseek 64 位偏移
dup() / dup2() / dup3()複製文件描述符I/O 重定向核心
fcntl()文件控制 (鎖、FD 旗標、異步 I/O)F_GETFL, F_SETFD, F_SETLK
flock()文件建議性鎖整文件鎖,跨進程可見
poll() / select() / epoll_*()I/O 多路複用epoll 為 Linux 高性能網路核心
fsync() / fdatasync()強制寫回磁碟數據持久化保證
sync()全系統緩衝區回寫
truncate() / ftruncate()截斷文件長度
umask()設置文件創建掩碼影響 open(mode) 權限

2. 文件系統操作

調用功能備註
stat() / lstat() / fstat()獲取文件狀態 (inode 信息)lstat 不跟隨符號鏈接
chmod() / fchmod()修改文件權限
chown() / fchown() / lchown()修改文件屬主/組
mkdir() / rmdir()創建/刪除目錄
link() / unlink() / linkat() / unlinkat()創建/刪除硬鏈接at 版本支援目錄 FD 相對路徑
symlink() / readlink()創建/讀取符號鏈接
rename() / renameat()重命名/移動文件原子操作
chdir() / fchdir() / getcwd()改變/獲取工作目錄
mknod() / mknodat()創建特殊文件 (設備、FIFO)
mount() / umount() / umount2()掛載/卸載文件系統需 CAP_SYS_ADMIN
statfs() / fstatfs() / ustat()獲取文件系統信息磁碟空間、inode 統計
getdents() / readdir()讀取目錄項ls 實現基礎
quotactl()磁碟配額控制
utime() / utimes() / utimensat()修改文件時間戳at 版本支援納秒精度
chroot()改變根目錄容器隔離前身
pivot_root()切換根文件系統initramfs 切換實際根目錄

三、系統控制

調用功能備註
ioctl()設備 I/O 控制 (萬能介面)網卡配置、磁碟查詢、聲音控制
_sysctl() / sysctl()讀寫內核參數 (/proc/sys)網路參數調優
reboot()重啟/關機/掛起需 CAP_SYS_BOOT
swapon() / swapoff()啟用/關閉交換分區
bdflush()控制 pdflush 守護進程舊版,現由 writeback 子系統管理
sysfs()獲取內核支援文件系統類型
sysinfo()獲取系統信息 (內存、負載、uptime)top/htop 數據源
adjtimex()精密調整系統時鐘NTP 守護進程使用
alarm() / getitimer() / setitimer()進程定時器 (真實/虛擬/剖析)SIGALRM/SIGVTALRM/SIGPROF
gettimeofday() / settimeofday()獲取/設置時間 (微秒精度)time() 秒級替代
clock_gettime() / clock_settime()高精度時鐘 (納秒、單調時鐘)CLOCK_MONOTONIC 計時首選
uname()獲取系統標識 (內核版本、架構)
vhangup()虛擬掛起終端登出清理
nfsservctl()NFS 守護進程控制
vm86()進入 8086 模擬模式DOSEMU、舊 BIOS 調用
create_module() / init_module() / delete_module() / query_module()內核模塊管理 (舊版)現用 finit_module() 等

四、內存管理

調用功能備註
brk() / sbrk()擴展/縮減堆頂端malloc 底層實現之一
mmap() / munmap()映射/解除映射虛擬內存文件映射、匿名映射、共享內存
mremap()擴展/移動映射區域動態調整映射大小
mprotect()設置內存保護 (讀/寫/執行)JIT 編譯、守衛頁
msync()映射內存回寫磁碟MS_SYNC/MS_ASYNC
mlock() / munlock() / mlockall() / munlockall()鎖定/解鎖內存頁面 (防換出)實時系統、加密密鑰保護
getpagesize()獲取頁面大小 (通常 4096)
mincore()查詢頁面是否駐留內存頁面緩存分析
madvise()預告內存訪問模式MADV_RANDOM/SEQUENTIAL/WILLNEED
shmget() / shmat() / shmdt() / shmctl()System V 共享內存IPC 鍵值識別

五、網絡管理

調用功能
gethostname() / sethostname()獲取/設置主機名
getdomainname() / setdomainname()獲取/設置 NIS/YP 域名
gethostid() / sethostid()獲取/設置主機 ID

六、Socket 控制

調用功能備註
socket() / socketpair()創建套接字/套接字對AF_INET, AF_UNIX, SOCK_STREAM/DGRAM
bind()綁定地址/埠
listen()監聽連接請求backlog 參數影響
accept() / accept4()接受連接accept4 可設置 SOCK_NONBLOCK/CLOEXEC
connect()發起連接
send() / sendto() / sendmsg()發送數據sendmsg 支援控制數據 (SCM_RIGHTS 傳 FD)
recv() / recvfrom() / recvmsg()接收數據
shutdown()關閉連接單向/雙向SHUT_RD/WR/RDWR
getsockname() / getpeername()獲取本地/對端地址
getsockopt() / setsockopt()獲取/設置套接字選項SO_REUSEADDR, TCP_NODELAY, SO_RCVBUF
sendfile() / splice() / tee() / vmsplice()零拷貝文件/管道傳輸高性能文件傳輸核心
getsockopt(TCP_INFO)獲取 TCP 連接狀態詳細信息RTT、重傳、擁塞窗口等

七、用戶管理

調用功能
getuid() / geteuid() / getgid() / getegid()獲取真實/有效 UID/GID
setuid() / seteuid() / setreuid() / setresuid()設置 UID (真實/有效/保存)
setgid() / setegid() / setregid() / setresgid()設置 GID
getgroups() / setgroups()獲取/設置補充組列表
setfsuid() / setfsgid()設置文件系統檢查用 UID/GID

八、進程間通信 (IPC)

1. 信號

見《Linux 信號機制深度解析》一文。

2. System V IPC

調用功能對象
msgget() / msgctl() / msgsnd() / msgrcv()消息隊列結構化數據傳遞
semget() / semctl() / semop()信號量集同步、互斥、資源計數
shmget() / shmctl() / shmat() / shmdt()共享內存最高速 IPC,需自行同步

3. 管道與現代 IPC

調用功能備註
pipe() / pipe2()創建匿名管道pipe2 可設置 O_CLOEXEC/NONBLOCK
eventfd() / eventfd2()事件計數器 FD線程/進程事件通知,極輕量
signalfd()信號轉為 FD統一事件循環處理信號
timerfd_create() / timerfd_settime()定時器 FDepoll 整合定時任務
inotify_init() / inotify_add_watch()文件系統事件監聽配置熱加載、自動構建
fanotify_init() / fanotify_mark()全局文件訪問監控防毒、備份、合規審計

結語

Linux 系統調用總數超 300 (x86_64 為 330+),但核心高頻僅 50~80 個。按「進程、文件、內存、網路、IPC、系統、用戶、時間」八大域分類建立知識圖譜,配合 `man 2 syscall`、`strace`、`bcc/ebpf` 觀測實際調用鏈,是精通 Linux 系統編程的捷徑。*標記調用已废弃或仅供内核内部使用,新代码请使用替代接口。*

Copyright © Windows教程網 All Rights Reserved