Linux系統呼叫索引
阿新 • • 發佈:2018-12-12
本系列計劃把Linux的所有系統呼叫都扒一遍,詳細解釋每個系統呼叫的功能,用法,使用示例,應用場景和注意事項。
系統中支援的系統呼叫列表及編號都定義在 /usr/include/asm/unistd.h檔案下。
以下的列表來源於64位的CentOS 7系統,詳解連結後面會陸續補充。
系統呼叫號 | 函式名 | 功能簡介 | 詳解 |
0 | read | 讀檔案內容 | |
1 | write | 向檔案中寫入內容 | |
2 | open | 開啟指定的檔案 | |
3 | close | 關閉指定的檔案 | |
4 | stat | 獲取檔案狀態資訊 | |
5 | fstat | 獲取檔案狀態資訊 | |
6 | lstat | 獲取檔案狀態資訊,對連結檔案不解引用 | |
7 | poll | 監聽一組檔案描述符上的發生的事件 | |
8 | lseek | 在檔案中定位 | |
9 | mmap | 對映虛擬記憶體頁 | |
10 | mprotect | 控制虛擬記憶體許可權 | |
11 | munmap | 刪除虛擬記憶體對映 | |
12 | brk | 調整堆空間範圍 | |
13 | sigaction | 設定訊號的處理函式 | |
14 | sigprocmask | 檢查並修改阻塞的訊號 | |
15 | sigreturn | 從訊號處理函式中返回並清空棧幀 | |
16 | ioctl | 輸入輸出控制 | |
17 | pread64 | 對大檔案隨機讀 | |
18 | pwrite64 | 對大檔案隨機寫 | |
19 | readv | 從檔案中讀取內容並分散到指定的多個緩衝區 | |
20 | writev | 從指定的多個緩衝區中獲取資料並集中寫入到檔案 | |
21 | access | 檢查檔案的訪問許可權 | |
22 | pipe | 建立管道 | |
23 | select | 多路同步IO輪詢 | |
24 | sched_yield | 程序主動放棄處理器,並把自己放到排程佇列的隊尾 | |
25 | mremap | 重新對映虛擬記憶體頁 | |
26 | msync | 將對映記憶體中的內容重新整理到磁碟 | |
27 | mincore | 測試指定的記憶體頁是否在實體記憶體中 | |
28 | madvise | 為記憶體使用提供建議 | |
29 | shmget | 獲取共享記憶體 | |
30 | shmat | 連線共享記憶體 | |
31 | shmctl | 共享記憶體屬性控制 | |
32 | dup | 複製一個已經開啟的檔案描述符 | |
33 | dup2 | 複製一個已經開啟的檔案描述符 | |
34 | pause | 將當前程序掛起,等待訊號喚醒 | |
35 | nanosleep | 精確的程序睡眠控制 | |
36 | getitimer | 獲取定時器值 | |
37 | alarm | 設定程序的定時提醒 | |
38 | setitimer | 設定定時器的值 | |
39 | getpid | 獲取當前程序的程序ID | |
40 | sendfile | 在檔案或埠建傳輸資料 | |
41 | socket | 建立一個套接字 | |
42 | connect | 連線遠端主機 | |
43 | accept | 接受socket上的連線請求 | |
44 | sendto | 傳送UDP訊息 | |
45 | recvfrom | 接收UDP訊息 | |
46 | sendmsg | 傳送訊息 | |
47 | recvmsg | 接收訊息 | |
48 | shutdown | 關閉Socket上的連線 | |
49 | bind | 繫結socket | |
50 | listen | 在指定套接字上監聽網路事件 | |
51 | getsockname | 獲取本地套接字的名字 | |
52 | getpeername | 獲取通訊的對端套接字的名字 | |
53 | socketpair | 建立一對已連線的無名socket | |
54 | setsockopt | 設定socket的各種屬性 | |
55 | getsockopt | 讀取socket的各種屬性 | |
56 | clone | 建立執行緒或程序的底層支援介面 | |
57 | fork | 建立子程序 | |
58 | vfork | 建立子程序,比fork更加高效,但是有侷限 | |
59 | execve | 在當前程序中執行指定的程式 | |
60 | exit | 退出當前程序 | |
61 | wait4 | 等待子程序終止,並可獲取子程序資源使用資料 | |
62 | kill | 給指定的程序傳送訊號 | |
63 | uname | 獲取系統名稱、版本、主機等資訊 | |
64 | semget | 獲取一組訊號量 | |
65 | semop | 操作指定的訊號量 | |
66 | semctl | 訊號量屬性控制 | |
67 | shmdt | 解除安裝共享記憶體 | |
68 | msgget | 獲取訊息佇列 | |
69 | msgsnd | 向訊息佇列傳送訊息 | |
70 | msgrcv | 從訊息佇列中讀取訊息 | |
71 | msgctl | 控制訊息佇列 | |
72 | fcntl | 檔案描述符屬性控制 | |
73 | flock | 檔案加鎖、解鎖 | |
74 | fsync | 將所有檔案內容和檔案元資料修改都同步到磁碟 | |
75 | fdatasync | 將檔案內容和重要的元資料修改同步到磁碟 | |
76 | truncate | 截斷檔案 | |
77 | ftruncate | 對檔案執行截斷 | |
78 | getdents | 讀取目錄項 | |
79 | getcwd | 獲取當前工作目錄 | |
80 | chdir | 改變當前工作目錄 | |
81 | fchdir | 改變當前工作目錄 | |
82 | rename | 重新命名指定的檔案 | |
83 | mkdir | 建立目錄 | |
84 | rmdir | 刪除目錄 | |
85 | creat | 建立新檔案 | |
86 | link | 建立檔案連結 | |
87 | unlink | 刪除檔案連結 | |
88 | symlink | 建立符號連結 | |
89 | readlink | 讀取符號連結的內容 | |
90 | chmod | 修改檔案許可權 | |
91 | fchmod | 修改檔案許可權,引數為已經開啟的檔案描述符 | |
92 | chown | 修改檔案所有者 | |
93 | fchown | 修改檔案所有者 | |
94 | lchown | 修改連結檔案的所有者,不解引用 | |
95 | umask | 設定檔案許可權掩碼 | |
96 | gettimeofday | 獲取當前系統時間 | |
97 | getrlimit | 獲取當前系統限制 | |
98 | getrusage | 獲取當前資源使用資料 | |
99 | sysinfo | 獲取系統資訊 | |
100 | times | 獲取程序執行時間 | |
101 | ptrace | 非常強大的程序跟蹤系統呼叫 | |
102 | getuid | 獲取當前使用者標識號 | |
103 | syslog | 讀取並清空核心訊息環形快取 | |
104 | getgid | 獲取組標識號 | |
105 | setuid | 設定使用者標識號 | |
106 | setgid | 設定組標識號 | |
107 | geteuid | 獲取有效使用者標識號 | |
108 | getegid | 獲取有效的組標識號 | |
109 | setpgid | 設定指定程序組標識號 | |
110 | getppid | 獲取父程序的程序ID | |
111 | getpgrp | 獲取指定程序組標識號 | |
112 | setsid | 設定臨時許可權使用者ID | |
113 | setreuid | 設定真實和有效的使用者標識號 | |
114 | setregid | 設定真實和有效的組標識號 | |
115 | getgroups | 獲取當前程序的附屬組ID列表 | |
116 | setgroups | 設定當前程序的附屬組ID列表 | |
117 | setresuid | 設定程序的真實使用者ID、有效使用者ID和特權使用者ID | |
118 | getresuid | 獲取程序的真實使用者ID、有效使用者ID和特權使用者ID | |
119 | setresgid | 設定程序的真實組ID,有效組ID和特權組ID | |
120 | getresgid | 獲取程序的真實組ID,有效組ID和特權組ID | |
121 | getpgid | 獲取程序組ID | |
122 | setfsuid | 設定程序組ID | |
123 | setfsgid | 設定檔案系統檢查時使用的組ID | |
124 | getsid | 獲取特權使用者ID | |
125 | capget | 獲取程序許可權 | |
126 | capset | 設定程序許可權 | |
127 | sigpending | ||
128 | sigtimedwait | ||
129 | sigqueueinfo | ||
130 | sigsuspend | ||
131 | sigaltstack | 定義或獲取程序的訊號棧 | |
132 | utime | 修改檔案的訪問時間或修改時間 | |
133 | mknod | 建立檔案系統節點 | |
134 | uselib | 載入要使用的動態連結庫 | |
135 | personality | 設定程序的執行域 | |
136 | ustat | 獲取檔案系統資訊 | |
137 | statfs | 獲取檔案系統資訊 | |
138 | fstatfs | 獲取檔案系統資訊 | |
139 | sysfs | 獲取系統支援的檔案系統型別 | |
140 | getpriority | 獲取程序執行優先順序 | |
141 | setpriority | 設定程序執行優先順序 | |
142 | sched_setparam | 設定程序的排程引數 | |
143 | sched_getparam | 獲取程序的排程引數 | |
144 | sched_setscheduler | 設定程序的排程策略和引數 | |
145 | sched_getscheduler | 獲取程序的排程策略和引數 | |
146 | sched_get_priority_max | 獲取程序靜態優先順序上限 | |
147 | sched_get_priority_min | 獲取程序靜態優先順序下限 | |
148 | sched_rr_get_interval | 取得按RR演算法排程的實時程序的時間片長度 | |
149 | mlock | 為記憶體頁面加鎖 | |
150 | munlock | 為記憶體頁面解鎖 | |
151 | mlockall | 當前程序的所有記憶體頁面加鎖 | |
152 | munlockall | 當前程序的所有記憶體頁面解鎖 | |
153 | vhangup | 掛起當前終端 | |
154 | modify_ldt | 讀寫程序的本地描述表 | |
155 | pivot_root | ||
156 | _sysctl | 讀/寫系統引數 | |
157 | prctl | 程序特殊控制 | |
158 | arch_prctl | ||
159 | adjtimex | 調整系統時鐘 | |
160 | setrlimit | 設定系統資源限制 | |
161 | chroot | 修改根目錄 | |
162 | sync | 將記憶體緩衝區資料寫回磁碟 | |
163 | acct | 啟用或關閉程序記賬 | |
164 | settimeofday | 設定當前系統時間和時區 | |
165 | mount | 掛載檔案系統 | |
166 | umount2 | 解除安裝檔案系統 | |
167 | swapon | 開啟交換檔案和裝置 | |
168 | swapoff | 關閉交換檔案和裝置 | |
169 | reboot | 重啟系統 | |
170 | sethostname | 設定主機名稱 | |
171 | setdomainname | 設定主機域名 | |
172 | iopl | 改變程序IO許可權級別 | |
173 | ioperm | 設定埠IO許可權 | |
174 | create_module | 建立可裝載的模組 | |
175 | init_module | 初始化模組 | |
176 | delete_module | 刪除可裝載的模組 | |
177 | get_kernel_syms | 獲取核心符號(已經被query_module取代) | |
178 | query_module | 查詢模組資訊 | |
179 | quotactl | 控制磁碟配額 | |
180 | nfsservctl | 控制NFS守護程序 | |
181 | getpmsg | ||
182 | putpmsg | ||
183 | afs_syscall | ||
184 | tuxcall | ||
185 | security | ||
186 | gettid | 獲取執行緒ID | |
187 | readahead | ||
188 | setxattr | ||
189 | lsetxattr | ||
190 | fsetxattr | ||
191 | getxattr | ||
192 | lgetxattr | ||
193 | fgetxattr | ||
194 | listxattr | ||
195 | llistxattr | ||
196 | flistxattr | ||
197 | removexattr | ||
198 | lremovexattr | ||
199 | fremovexattr | ||
200 | tkill | ||
201 | time | 獲取系統時間 | |
202 | futex | ||
203 | sched_setaffinity | ||
204 | sched_getaffinity | ||
205 | set_thread_area | ||
206 | io_setup | ||
207 | io_destroy | ||
208 | io_getevents | ||
209 | io_submit | ||
210 | io_cancel | ||
211 | get_thread_area | ||
212 | lookup_dcookie | ||
213 | epoll_create | 建立epoll例項 | |
214 | epoll_ctl_old | ||
215 | epoll_wait_old | ||
216 | remap_file_pages | ||
217 | getdents64 | ||
218 | set_tid_address | ||
219 | restart_syscall | ||
220 | semtimedop | ||
221 | fadvise64 | ||
222 | timer_create | ||
223 | timer_settime | ||
224 | timer_gettime | ||
225 | timer_getoverrun | ||
226 | timer_delete | ||
227 | clock_settime | ||
228 | clock_gettime | ||
229 | clock_getres | ||
230 | clock_nanosleep | ||
231 | exit_group | ||
232 | epoll_wait | 監聽epoll上發生的事件 | |
233 | epoll_ctl | epoll控制介面 | |
234 | tgkill | ||
235 | utimes | 修改檔案的修改或訪問時間 | |
236 | vserver | ||
237 | mbind | ||
238 | set_mempolicy | ||
239 | get_mempolicy | ||
240 | mq_open | ||
241 | mq_unlink | ||
242 | mq_timedsend | ||
243 | mq_timedreceive | ||
244 | mq_notify | ||
245 | mq_getsetattr | ||
246 | kexec_load | ||
247 | waitid | ||
248 | add_key | ||
249 | request_key | ||
250 | keyctl | ||
251 | ioprio_set | ||
252 | ioprio_get | ||
253 | inotify_init | ||
254 | inotify_add_watch | ||
255 | inotify_rm_watch | ||
256 | migrate_pages | ||
257 | openat | ||
258 | mkdirat | ||
259 | mknodat | ||
260 | fchownat | ||
261 | futimesat | ||
262 | newfstatat | ||
263 | unlinkat | ||
264 | renameat | ||
265 | linkat | ||
266 | symlinkat | ||
267 | readlinkat | ||
268 | fchmodat | ||
269 | faccessat | ||
270 | pselect6 | ||
271 | ppoll | ||
272 | unshare | ||
273 | set_robust_list | ||
274 | get_robust_list | ||
275 | splice | ||
276 | tee | ||
277 | sync_file_range | ||
278 | vmsplice | ||
279 | move_pages | ||
280 | utimensat | ||
281 | epoll_pwait | ||
282 | signalfd | ||
283 | timerfd_create | ||
284 | eventfd | ||
285 | fallocate | ||
286 | timerfd_settime | ||
287 | timerfd_gettime | ||
288 | accept4 | ||
289 | signalfd4 | ||
290 | eventfd2 | ||
291 | epoll_create1 | ||
292 | dup3 | ||
293 | pipe2 | ||
294 | inotify_init1 | ||
295 | preadv | ||
296 | pwritev | ||
297 | rt_tgsigqueueinfo | ||
298 | perf_event_open | ||
299 | recvmmsg | ||
300 | fanotify_init | ||
301 | fanotify_mark | ||
302 | prlimit64 | ||
303 | name_to_handle_at | ||
304 | open_by_handle_at | ||
305 | clock_adjtime | ||
306 | syncfs | 更新指定檔案描述符的檔案系統 | |
307 | sendmmsg | sendmsg的擴充套件,可在一次系統呼叫中向socket傳送多塊資料 | |
308 | setns | 設定一個檔案描述符的名稱空間 | |
309 | getcpu | 獲取當前執行緒所在的處理器和節點 | |
310 | process_vm_readv | ||
311 | process_vm_writev | ||
312 | kcmp | ||
313 | finit_module | ||
314 | sched_setattr | ||
315 | sched_getattr | ||
316 | renameat2 | ||
317 | seccomp | ||
318 | getrandom | ||
319 | memfd_create | ||
320 | kexec_file_load | ||
323 | userfaultfd | ||
326 | copy_file_range | ||
329 | pkey_mprotect | ||
330 | pkey_alloc | ||
331 | pkey_free |