1. 程式人生 > >Linux系統呼叫索引

Linux系統呼叫索引

本系列計劃把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