以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。
按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改,并对所有列出的系统调用附上简要注释。
其中有一些函数的作用完全相同,只是参数不同。(可能很多熟悉C++朋友马上就能联想起函数重载,但是别忘了Linux核心是用C语言写的,所以只能取成不同的函数名)。还有一些函数已经过时,被新的更好的函数所代替了(gcc在链接这些函数时会发出警告),但因为兼容的原因还保留着,这些函数我会在前面标上“*”号以示区别。
一、进程控制:
fork
|
创建一个新进程
|
clone
|
按指定条件创建子进程
|
execve
|
运行可执行文件
|
exit
|
中止进程
|
_exit
|
立即中止当前进程
|
getdtablesize
|
进程所能打开的最大文件数
|
getpgid
|
获取指定进程组标识号
|
setpgid
|
设置指定进程组标志号
|
getpgrp
|
获取当前进程组标识号
|
setpgrp
|
设置当前进程组标志号
|
getpid
|
获取进程标识号
|
getppid
|
获取父进程标识号
|
getpriority
|
获取调度优先级
|
setpriority
|
设置调度优先级
|
modify_ldt
|
读写进程的本地描述表
|
nanosleep
|
使进程睡眠指定的时间
|
nice
|
改变分时进程的优先级
|
pause
|
挂起进程,等待信号
|
personality
|
设置进程运行域
|
prctl
|
对进程进行特定操作
|
ptrace
|
进程跟踪
|
sched_get_priority_max
|
取得静态优先级的上限
|
sched_get_priority_min
|
取得静态优先级的下限
|
sched_getparam
|
取得进程的调度参数
|
sched_getscheduler
|
取得指定进程的调度策略
|
sched_rr_get_interval
|
取得按RR算法调度的实时进程的时间片长度
|
sched_setparam
|
设置进程的调度参数
|
sched_setscheduler
|
设置指定进程的调度策略和参数
|
sched_yield
|
进程主动让出处理器,并将自己等候调度队列队尾
|
vfork
|
创建一个子进程,以供执行新程序,常与execve等同时使用
|
wait
|
等待子进程终止
|
wait3
|
参见wait
|
waitpid
|
等待指定子进程终止
|
wait4
|
参见waitpid
|
capget
|
获取进程权限
|
capset
|
设置进程权限
|
getsid
|
获取会晤标识号
|
setsid
|
设置会晤标识号
|
回页首
二、文件系统控制
1、文件读写操作
fcntl
|
文件控制
|
open
|
打开文件
|
creat
|
创建新文件
|
close
|
关闭文件描述字
|
read
|
读文件
|
write
|
写文件
|
readv
|
从文件读入数据到缓冲数组中
|
writev
|
将缓冲数组里的数据写入文件
|
pread
|
对文件随机读
|
pwrite
|
对文件随机写
|
lseek
|
移动文件指针
|
_llseek
|
在64位地址空间里移动文件指针
|
dup
|
复制已打开的文件描述字
|
dup2
|
按指定条件复制文件描述字
|
flock
|
文件加/解锁
|
poll
|
I/O多路转换
|
truncate
|
截断文件
|
ftruncate
|
参见truncate
|
umask
|
设置文件权限掩码
|
fsync
|
把文件在内存中的部分写回磁盘
|
2、文件系统操作
access
|
确定文件的可存取性
|
chdir
|
改变当前工作目录
|
fchdir
|
参见chdir
|
chmod
|
改变文件方式
|
fchmod
|
参见chmod
|
chown
|
改变文件的属主或用户组
|
fchown
|
参见chown
|
lchown
|
参见chown
|
chroot
|
改变根目录
|
stat
|
取文件状态信息
|
lstat
|
参见stat
|
fstat
|
参见stat
|
statfs
|
取文件系统信息
|
fstatfs
|
参见statfs
|
readdir
|
读取目录项
|
getdents
|
读取目录项
|
mkdir
|
创建目录
|
mknod
|
创建索引节点
|
rmdir
|
删除目录
|
rename
|
文件改名
|
link
|
创建链接
|
symlink
|
创建符号链接
|
unlink
|
删除链接
|
readlink
|
读符号链接的值
|
mount
|
安装文件系统
|
umount
|
卸下文件系统
|
ustat
|
取文件系统信息
|
utime
|
改变文件的访问修改时间
|
utimes
|
参见utime
|
quotactl
|
控制磁盘配额
|
回页首
三、系统控制
ioctl
|
I/O总控制函数
|
_sysctl
|
读/写系统参数
|
acct
|
启用或禁止进程记账
|
getrlimit
|
获取系统资源上限
|
setrlimit
|
设置系统资源上限
|
getrusage
|
获取系统资源使用情况
|
uselib
|
选择要使用的二进制函数库
|
ioperm
|
设置端口I/O权限
|
iopl
|
改变进程I/O权限级别
|
outb
|
低级端口操作
|
reboot
|
重新启动
|
swapon
|
打开交换文件和设备
|
swapoff
|
关闭交换文件和设备
|
bdflush
|
控制bdflush守护进程
|
sysfs
|
取核心支持的文件系统类型
|
sysinfo
|
取得系统信息
|
adjtimex
|
调整系统时钟
|
alarm
|
设置进程的闹钟
|
getitimer
|
获取计时器值
|
setitimer
|
设置计时器值
|
gettimeofday
|
取时间和时区
|
settimeofday
|
设置时间和时区
|
stime
|
设置系统日期和时间
|
time
|
取得系统时间
|
times
|
取进程运行时间
|
uname
|
获取当前UNIX系统的名称、版本和主机等信息
|
vhangup
|
挂起当前终端
|
nfsservctl
|
对NFS守护进程进行控制
|
vm86
|
进入模拟8086模式
|
create_module
|
创建可装载的模块项
|
delete_module
|
删除可装载的模块项
|
init_module
|
初始化模块
|
query_module
|
查询模块信息
|
*get_kernel_syms
|
取得核心符号,已被query_module代替
|
回页首
四、内存管理
brk
|
改变数据段空间的分配
|
sbrk
|
参见brk
|
mlock
|
内存页面加锁
|
munlock
|
内存页面解锁
|
mlockall
|
调用进程所有内存页面加锁
|
munlockall
|
调用进程所有内存页面解锁
|
mmap
|
映射虚拟内存页
|
munmap
|
去除内存页映射
|
mremap
|
重新映射虚拟内存地址
|
msync
|
将映射内存中的数据写回磁盘
|
mprotect
|
设置内存映像保护
|
getpagesize
|
获取页面大小
|
sync
|
将内存缓冲区数据写回硬盘
|
cacheflush
|
将指定缓冲区中的内容写回磁盘
|
回页首
五、网络管理
getdomainname
|
取域名
|
setdomainname
|
设置域名
|
gethostid
|
获取主机标识号
|
sethostid
|
设置主机标识号
|
gethostname
|
获取本主机名称
|
sethostname
|
设置主机名称
|
回页首
六、socket控制
socketcall
|
socket系统调用
|
socket
|
建立socket
|
bind
|
绑定socket到端口
|
connect
|
连接远程主机
|
accept
|
响应socket连接请求
|
send
|
通过socket发送信息
|
sendto
|
发送UDP信息
|
sendmsg
|
参见send
|
recv
|
通过socket接收信息
|
recvfrom
|
接收UDP信息
|
recvmsg
|
参见recv
|
listen
|
监听socket端口
|
select
|
对多路同步I/O进行轮询
|
shutdown
|
关闭socket上的连接
|
getsockname
|
取得本地socket名字
|
getpeername
|
获取通信对方的socket名字
|
getsockopt
|
取端口设置
|
setsockopt
|
设置端口参数
|
sendfile
|
在文件或端口间传输数据
|
socketpair
|
创建一对已联接的无名socket
|
回页首
七、用户管理
getuid
|
获取用户标识号
|
setuid
|
设置用户标志号
|
getgid
|
获取组标识号
|
setgid
|
设置组标志号
|
getegid
|
获取有效组标识号
|
setegid
|
设置有效组标识号
|
geteuid
|
获取有效用户标识号
|
seteuid
|
设置有效用户标识号
|
setregid
|
分别设置真实和有效的的组标识号
|
setreuid
|
分别设置真实和有效的用户标识号
|
getresgid
|
分别获取真实的,有效的和保存过的组标识号
|
setresgid
|
分别设置真实的,有效的和保存过的组标识号
|
getresuid
|
分别获取真实的,有效的和保存过的用户标识号
|
setresuid
|
分别设置真实的,有效的和保存过的用户标识号
|
setfsgid
|
设置文件系统检查时使用的组标识号
|
setfsuid
|
设置文件系统检查时使用的用户标识号
|
getgroups
|
获取后补组标志清单
|
setgroups
|
设置后补组标志清单
|
回页首
八、进程间通信
1、信号
sigaction
|
设置对指定信号的处理方法
|
sigprocmask
|
根据参数对信号集中的信号执行阻塞/解除阻塞等操作
|
sigpending
|
为指定的被阻塞信号设置队列
|
sigsuspend
|
挂起进程等待特定信号
|
signal
|
参见signal
|
kill
|
向进程或进程组发信号
|
*sigblock
|
向被阻塞信号掩码中添加信号,已被sigprocmask代替
|
*siggetmask
|
取得现有阻塞信号掩码,已被sigprocmask代替
|
*sigsetmask
|
用给定信号掩码替换现有阻塞信号掩码,已被sigprocmask代替
|
*sigmask
|
将给定的信号转化为掩码,已被sigprocmask代替
|
*sigpause
|
作用同sigsuspend,已被sigsuspend代替
|
sigvec
|
为兼容BSD而设的信号处理函数,作用类似sigaction
|
ssetmask
|
ANSI C的信号处理函数,作用类似sigaction
|
2、消息
msgctl
|
消息控制操作
|
msgget
|
获取消息队列
|
msgsnd
|
发消息
|
msgrcv
|
取消息
|
3、管道
4、信号量
semctl
|
信号量控制
|
semget
|
获取一组信号量
|
semop
|
信号量操作
|
5、共享内存
shmctl
|
控制共享内存
|
shmget
|
获取共享内存
|
shmat
|
连接共享内存
|
shmdt
|
拆卸共享内存
|
阅读(1082) | 评论(0) | 转发(0) |