Linux 系统调用
时间:2019-09-18 20:14:27
参考:
Linux 系统调用#
在 Linux 中进程不能和硬件直接交互,当需要访问硬件(硬盘、鼠标、键盘)时,需要由用户态切换到内核态执行系统调用,间接的操作硬件。
系统调用#
进程控制#
fork
: 创建一个新进程。clone
: 按指定条件创建子进程。execve
: 运行可执行文件。exit
: 终止进程。_exit
: 立即终止当前进程。getdtablesize
: 进程能打开的最大文件数。getpgid
: 获取指定进程组标识号。setpgid
: 设置指定进程组标志号。getpgrp
: 获取当前进程组标识号。setpgrp
: 设置当前进程组标志号。getpid
: 获取进程标识号。getppid
: 获取父进程标识符。getpriority
: 获取调度优先级。setpriority
: 设置调度优先级。modify_ldt
: 读写进程的本地描述表。nanosleep
: 使进程睡眠指定的时间。nice
: 改变分时进程的优先级。pause
: 挂起进程,等待信号。personality
: 设置进程运行域。prctl
: 对进程进行特定操作。
文件系统控制#
fcntl
: 文件控制。open
: 打开文件。creat
: 创建文件。close
: 关闭文件描述符。read
: 读文件。write
: 写文件。readv
: 从文件读入数据到缓冲数组中。writev
: 将缓冲数组里的数据写入文件。pread
: 对文件随机读。pwrite
: 对文件随机写。lseek
: 移动文件指针。_llseek
: 在64位地址空间里移动文件指针。dup
: 复制已打开的文件描述字。dup2
: 按指定条件复制文件描述字。flock
: 文件加/解锁。poll
: IO 多路转换。truncate
: 截断文件。umask
: 设置文件权限掩码。fsync
: 把文件在内存中的部分写回磁盘。
系统控制#
ioctl
: IO总线控制。getrlimit
: 获取系统资源上限。swapon
: 打开交换文件和设备。sysfs
: 取核心支持的文件系统类型。sysinfo
: 取得系统信息。adjtimex
: 调整系统时钟。getitimer
: 获取计时器值。gettimeofday
: 取时间和时区。times
: 取进程运行时间。init_module
: 初始化模块。query_module
: 查询模块信息。
内存管理#
brk
: 改变数据段空间的分配。mlock
: 内存页面加锁。munlock
: 内存页面解锁。mlockall
: 调用进程所有内存页面加锁。mmap
: 映射虚拟内存页。munmap
: 去除内存页映射。msync
: 将映射内存中的数据写回磁盘。getpagesize
: 获取页面大小。sync
: 将内存缓冲区数据写回硬盘。cacheflush
: 将指定缓冲区中的内容写回磁盘。
网络管理#
getdomainname
: 取域名。setdomainname
: 设置域名。gethostid
获取主机标识号。sethostid
设置主机标识号。gethostname
获取本主机名称。sethostname
设置主机名称。
socket控制#
socketcall
: socket 系统调用。scoket
: 建立socket。bind
: 绑定到指定端口。connect
: 连接远程主机。accept
: 响应socket连接请求。send
: 通过socket发送信息。recv
: 通过socket接收信息。listen
: 监听socket端口。select
: 对多路同步I/O进行轮询。
用户管理#
getuid
: 获取用户标识。setuid
:设置用户标识。getgid
: 获取用户组标识。
进程间通信#
ipc
: 进程间通信总控制调用。
信号#
sigaction
: 设置对指定信号的处理方法。sigprocmask
: 根据参数对信号集中的信号执行阻塞/解除阻塞等操作。sigpending
: 为指定的被阻塞信号设置队列。sigsuspend
: 挂起进程等待特定信号。signal
: 参见signal。kill
: 向进程或进程组发信号。
消息#
msgctl
: 消息控制操作。msgget
: 获取消息队列。msgsnd
: 发消息。msgrcv
: 取消息。
管道#
pipe
创建管道。
信号量#
semctl
信号量控制。semget
获取一组信号量。semop
信号量操作。
共享内存#
shmctl
控制共享内存。shmget
获取共享内存。shmat
连接共享内存。shmdt
拆卸共享内存。