Linux系統調用列表(CentOS 7 64bits)

本系列計劃把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 設置進程的CPU親和性掩碼    
204 sched_getaffinity 獲取進程的CPU親和性掩碼    
205 set_thread_area 設置線程的本地存取區    
206 io_setup 創建異步IO上下文    
207 io_destroy 銷燬異步IO上下文    
208 io_getevents 從完成隊列中獲取異步IO事件    
209 io_submit 提交異步IO塊    
210 io_cancel 取消一個未完成的同步IO操作    
211 get_thread_area 獲取線程本地存儲區    
212 lookup_dcookie 獲取一個cookie的完整目錄    
213 epoll_create 創建epoll實例    
214 epoll_ctl_old 老的epoll控制接口    
215 epoll_wait_old 老的epoll監控接口    
216 remap_file_pages 創建一個非線性的文件映射    
217 getdents64 獲取目錄入口    
218 set_tid_address 設置存儲線程ID的內存地址 2.5.49  
219 restart_syscall 重新啓動一個被信號打斷的系統調用 2.6  
220 semtimedop System V信號操作函數 2.4.22  
221 fadvise64 提前聲明一個文件的訪問模式 2.5.60  
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

把文件的一部分內容拷貝到另一個文件

4.5  
329 pkey_mprotect      
330 pkey_alloc      
331 pkey_free      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章