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      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章