首页 > 代码库 > Linux系统常见调用及其分类

Linux系统常见调用及其分类

Linux系统调用主要可以分为以下几类:

  • 进程控制


  •  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设置会晤标识号
  • 文件操作


  •  fcntl文件控制
    open打开文件
    creat创建新文件
    close关闭文件描述字
    read读文件
    write写文件
    readv从文件读入数据到缓冲数组中
    writev将缓冲数组里的数据写入文件
    pread对文件随机读
    pwrite对文件随机写
    lseek移动文件指针
    _llseek在64位地址空间里移动文件指针
    dup复制已打开的文件描述字
    dup2按指定条件复制文件描述字
    flock文件加/解锁
    pollI/O多路转换
    truncate截断文件
    ftruncate参见truncate
    umask设置文件权限掩码
    fsync把文件在内存中的部分写回磁盘
  • 文件系统操作


  •  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控制磁盘配额
  • 系统控制


  •  ioctlI/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设置主机名称

    socketcallsocket系统调用
    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
ssetmaskANSI C的信号处理函数,作用类似sigaction

2、消息

 msgctl消息控制操作
msgget获取消息队列
msgsnd发消息
msgrcv取消息

3、管道

pipe 创建管道

4、信号量

 semctl信号量控制
semget获取一组信号量
semop信号量操作

5、共享内存

 shmctl控制共享内存
shmget获取共享内存
shmat连接共享内存
shmdt拆卸共享内存

Linux系统常见调用及其分类