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拆卸共享内存。