Linux系统调用列表(CentOS 7 64bits)

本系列计划把Linux的所有系统调用都扒一遍,详细解释每个系统调用的功能,用法,使用示例,应用场景和注意事项。

系统中支持的系统调用列表及编号都定义在 /usr/include/asm/unistd.h文件下。

以下的列表来源于64位的CentOS 7系统,详解链接后面会陆续补充。

 

系统调用号函数名功能简介起始内核版本详解链接
0read读文件内容------Linux系统调用 - read
1write向文件中写入内容------Linux系统调用 - write
2open打开指定的文件------Linux系统调用 - open
3close关闭指定的文件------Linux系统调用 - close
4stat获取文件状态信息 Linux系统调用 - 获取文件状态
5fstat获取文件状态信息 Linux系统调用 - 获取文件状态
6lstat获取文件状态信息,对链接文件不解引用 Linux系统调用 - 获取文件状态
7poll监听一组文件描述符上的发生的事件 Linux系统调用 - 文件IO复用
8lseek在文件中定位  
9mmap映射虚拟内存页  
10mprotect控制虚拟内存权限  
11munmap删除虚拟内存映射  
12brk调整堆空间范围  
13sigaction设置信号的处理函数  
14sigprocmask检查并修改阻塞的信号  
15sigreturn从信号处理函数中返回并清空栈帧  
16ioctl输入输出控制  
17pread64对大文件随机读  
18pwrite64对大文件随机写  
19readv从文件中读取内容并分散到指定的多个缓冲区  
20writev从指定的多个缓冲区中获取数据并集中写入到文件  
21access检查文件的访问权限  
22pipe创建管道  
23select多路同步IO轮询  
24sched_yield进程主动放弃处理器,并把自己放到调度队列的队尾  
25mremap重新映射虚拟内存页  
26msync将映射内存中的内容刷新到磁盘  
27mincore测试指定的内存页是否在物理内存中  
28madvise为内存使用提供建议  
29shmget获取共享内存  
30shmat连接共享内存  
31shmctl共享内存属性控制  
32dup复制一个已经打开的文件描述符  
33dup2复制一个已经打开的文件描述符  
34pause将当前进程挂起,等待信号唤醒  
35nanosleep精确的进程睡眠控制  
36getitimer获取定时器值  
37alarm设置进程的定时提醒  
38setitimer设置定时器的值  
39getpid获取当前进程的进程ID  
40sendfile在文件或端口建传输数据  
41socket创建一个套接字  
42connect连接远程主机  
43accept接受socket上的连接请求  
44sendto发送UDP消息  
45recvfrom接收UDP消息  
46sendmsg发送消息  
47recvmsg接收消息  
48shutdown关闭Socket上的连接 Linux系统调用 - shutdown
49bind绑定socket  
50listen在指定套接字上监听网络事件  
51getsockname获取本地套接字的名字  
52getpeername获取通信的对端套接字的名字  
53socketpair创建一对已连接的无名socket  
54setsockopt设置socket的各种属性  
55getsockopt读取socket的各种属性  
56clone创建线程或进程的底层支持接口  
57fork创建子进程  
58vfork创建子进程,比fork更加高效,但是有局限  
59execve在当前进程中运行指定的程序  
60exit退出当前进程  
61wait4等待子进程终止,并可获取子进程资源使用数据  
62kill给指定的进程发送信号  
63uname获取系统名称、版本、主机等信息  
64semget获取一组信号量  
65semop操作指定的信号量  
66semctl信号量属性控制  
67shmdt卸载共享内存  
68msgget获取消息队列  
69msgsnd向消息队列发送消息  
70msgrcv从消息队列中读取消息  
71msgctl控制消息队列  
72fcntl文件描述符属性控制  
73flock文件加锁、解锁  
74fsync将所有文件内容和文件元数据修改都同步到磁盘  
75fdatasync将文件内容和重要的元数据修改同步到磁盘  
76truncate截断文件  
77ftruncate对文件执行截断  
78getdents读取目录项  
79getcwd获取当前工作目录  
80chdir改变当前工作目录  
81fchdir改变当前工作目录  
82rename重命名指定的文件  
83mkdir创建目录  
84rmdir删除目录  
85creat创建新文件  
86link创建文件链接  
87unlink删除文件链接  
88symlink创建符号链接  
89readlink读取符号链接的内容  
90chmod修改文件权限  
91fchmod修改文件权限,参数为已经打开的文件描述符  
92chown修改文件所有者  
93fchown修改文件所有者  
94lchown修改链接文件的所有者,不解引用  
95umask设置文件权限掩码  
96gettimeofday获取当前系统时间  
97getrlimit获取当前系统限制  
98getrusage获取当前资源使用数据  
99sysinfo获取系统信息  
100times获取进程运行时间  
101ptrace非常强大的进程跟踪系统调用  
102getuid获取当前用户标识号  
103syslog读取并清空内核消息环形缓存  
104getgid获取组标识号  
105setuid设置用户标识号  
106setgid设置组标识号  
107geteuid获取有效用户标识号  
108getegid获取有效的组标识号  
109setpgid设置指定进程组标识号  
110getppid获取父进程的进程ID  
111getpgrp获取指定进程组标识号  
112setsid设置临时权限用户ID  
113setreuid设置真实和有效的用户标识号  
114setregid设置真实和有效的组标识号  
115getgroups获取当前进程的附属组ID列表  
116setgroups设置当前进程的附属组ID列表  
117setresuid设置进程的真实用户ID、有效用户ID和特权用户ID  
118getresuid获取进程的真实用户ID、有效用户ID和特权用户ID  
119setresgid设置进程的真实组ID,有效组ID和特权组ID  
120getresgid获取进程的真实组ID,有效组ID和特权组ID  
121getpgid获取进程组ID  
122setfsuid设置进程组ID  
123setfsgid设置文件系统检查时使用的组ID  
124getsid 获取特权用户ID  
125capget获取进程权限  
126capset设置进程权限  
127sigpending检查挂起的信号  
128sigtimedwait同步地等待排队的信号  
129sigqueueinfo   
130sigsuspend挂起进程来等待一个信号  
131sigaltstack定义或获取进程的信号栈  
132utime修改文件的访问时间或修改时间  
133mknod创建文件系统节点  
134uselib加载要使用的动态链接库  
135personality设置进程的运行域  
136ustat获取文件系统信息  
137statfs获取文件系统信息  
138fstatfs获取文件系统信息  
139sysfs获取系统支持的文件系统类型  
140getpriority获取进程运行优先级  
141setpriority设置进程运行优先级  
142sched_setparam设置进程的调度参数  
143sched_getparam获取进程的调度参数  
144sched_setscheduler设置进程的调度策略和参数  
145sched_getscheduler获取进程的调度策略和参数  
146sched_get_priority_max获取进程静态优先级上限  
147sched_get_priority_min获取进程静态优先级下限  
148sched_rr_get_interval取得按RR算法调度的实时进程的时间片长度  
149mlock为内存页面加锁  
150munlock为内存页面解锁  
151mlockall当前进程的所有内存页面加锁  
152munlockall当前进程的所有内存页面解锁  
153vhangup挂起当前终端  
154modify_ldt读写进程的本地描述表  
155pivot_root修改当前进程的根文件目录  
156_sysctl读/写系统参数  
157prctl进程特殊控制  
158arch_prctl设置架构相关的线程状态  
159adjtimex调整系统时钟  
160setrlimit设置系统资源限制  
161chroot修改根目录  
162sync将内存缓冲区数据写回磁盘  
163acct启用或关闭进程记账  
164settimeofday设置当前系统时间和时区  
165mount挂载文件系统  
166umount2卸载文件系统  
167swapon开启交换文件和设备  
168swapoff关闭交换文件和设备  
169reboot重启系统  
170sethostname设置主机名称  
171setdomainname设置主机域名  
172iopl改变进程IO权限级别  
173ioperm设置端口IO权限  
174create_module创建可装载的模块  
175init_module初始化模块  
176delete_module删除可装载的模块  
177get_kernel_syms获取核心符号(已经被query_module取代)  
178query_module查询模块信息  
179quotactl控制磁盘配额  
180nfsservctl控制NFS守护进程  
181getpmsg未实现的系统调用  
182putpmsg未实现的系统调用  
183afs_syscall未实现的系统调用  
184tuxcall未实现的系统调用  
185security未实现的系统调用  
186gettid获取线程ID  
187readahead把文件预读取到页缓存内  
188setxattr设置文件或路径的扩展属性  
189lsetxattr设置链接文件的扩展属性  
190fsetxattr设置文件的扩展属性  
191getxattr获取文件或路径的扩展属性  
192lgetxattr获取链接文件的扩展属性  
193fgetxattr获取文件或路径的扩展属性  
194listxattr列出文件或路径的扩展属性  
195llistxattr列出链接文件的扩展属性  
196flistxattr列出文件或路径的扩展属性  
197removexattr移除文件的扩展属性  
198lremovexattr移除链接文件的扩展属性  
199fremovexattr移除链接文件的扩展属性  
200tkill给指定的线程发送信号  
201time获取系统时间  
202futex快速用户空间锁  
203sched_setaffinity设置进程的CPU亲和性掩码  
204sched_getaffinity获取进程的CPU亲和性掩码  
205set_thread_area设置线程的本地存取区  
206io_setup创建异步IO上下文  
207io_destroy销毁异步IO上下文  
208io_getevents从完成队列中获取异步IO事件  
209io_submit提交异步IO块  
210io_cancel取消一个未完成的同步IO操作  
211get_thread_area获取线程本地存储区  
212lookup_dcookie获取一个cookie的完整目录  
213epoll_create创建epoll实例  
214epoll_ctl_old老的epoll控制接口  
215epoll_wait_old老的epoll监控接口  
216remap_file_pages创建一个非线性的文件映射  
217getdents64获取目录入口  
218set_tid_address设置存储线程ID的内存地址2.5.49 
219restart_syscall重新启动一个被信号打断的系统调用2.6 
220semtimedopSystem V信号操作函数2.4.22 
221fadvise64提前声明一个文件的访问模式2.5.60 
222timer_create   
223timer_settime   
224timer_gettime   
225timer_getoverrun   
226timer_delete   
227clock_settime   
228clock_gettime   
229clock_getres   
230clock_nanosleep   
231exit_group   
232epoll_wait监听epoll上发生的事件  
233epoll_ctlepoll控制接口  
234tgkill   
235utimes修改文件的修改或访问时间  
236vserver   
237mbind   
238set_mempolicy   
239get_mempolicy   
240mq_open   
241mq_unlink   
242mq_timedsend   
243mq_timedreceive   
244mq_notify   
245mq_getsetattr   
246kexec_load   
247waitid   
248add_key   
249request_key   
250keyctl   
251ioprio_set   
252ioprio_get   
253inotify_init   
254inotify_add_watch   
255inotify_rm_watch   
256migrate_pages   
257openat   
258mkdirat   
259mknodat   
260fchownat   
261futimesat   
262newfstatat   
263unlinkat   
264renameat   
265linkat   
266symlinkat   
267readlinkat   
268fchmodat   
269faccessat   
270pselect6   
271ppoll   
272unshare   
273set_robust_list   
274get_robust_list   
275splice   
276tee   
277sync_file_range   
278vmsplice   
279move_pages   
280utimensat   
281epoll_pwait   
282signalfd   
283timerfd_create   
284eventfd   
285fallocate   
286timerfd_settime   
287timerfd_gettime   
288accept4   
289signalfd4   
290eventfd2   
291epoll_create1   
292dup3   
293pipe2   
294inotify_init1   
295preadv   
296pwritev   
297rt_tgsigqueueinfo   
298perf_event_open   
299recvmmsg   
300fanotify_init   
301fanotify_mark   
302prlimit64   
303name_to_handle_at   
304open_by_handle_at   
305clock_adjtime   
306syncfs更新指定文件描述符的文件系统  
307sendmmsgsendmsg的扩展,可在一次系统调用中向socket发送多块数据  
308setns设置一个文件描述符的命名空间  
309getcpu获取当前线程所在的处理器和节点  
310process_vm_readv   
311process_vm_writev   
312kcmp   
313finit_module   
314sched_setattr   
315sched_getattr   
316renameat2   
317seccomp   
318getrandom   
319memfd_create   
320kexec_file_load   
323userfaultfd   
326copy_file_range

把文件的一部分内容拷贝到另一个文件

4.5 
329pkey_mprotect   
330pkey_alloc   
331pkey_free   

 

==================== 以下是广告 ====================

更多系统详尽的Linux系统编程内容,欢迎订阅GitChat专栏 《攻克Linux系统编程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值