Linux中进程相关的API

Jicheng's Blog / 2023-09-02 / 原文

在Linux中,进程控制相关的API非常多。以下是一些常用的进程控制相关的系统调用(syscalls)和库函数:

  1. 创建和终止进程:

    • fork(): 创建一个新进程,这是创建新进程的最常用方法。
    • vfork(): 类似于fork(),但有一些差异,主要用于exec调用之前。
    • exec(): 系列函数(如execl(), execp(), execle(), execve(), execvp()),用于在当前进程上下文中执行一个新的程序。
    • exit(): 结束当前进程。
    • _exit(): 立即结束当前进程。
    • wait(): 等待子进程结束。
    • waitpid(): 等待指定的子进程结束。
  2. 进程属性:

    • getpid(): 获取当前进程的PID。
    • getppid(): 获取父进程的PID。
    • setpgid(): 设置进程组ID。
    • getpgid(): 获取进程组ID。
    • getpgrp(): 获取进程组。
    • setsid(): 创建新的会话。
  3. 信号:

    • kill(): 发送信号到指定进程。
    • signal(): 设置信号处理函数。
    • sigaction(): 详细设置信号处理行为。
    • pause(): 暂停进程直到收到一个信号。
    • sigprocmask(): 修改或检查被阻塞的信号集。
    • sigpending(): 获取当前阻塞的信号集。
  4. 进程调度和优先级:

    • nice(): 改变进程的执行优先级。
    • getpriority(): 获取进程的优先级。
    • setpriority(): 设置进程的优先级。
    • sched_setscheduler(): 设置进程的调度策略和优先级。
    • sched_getscheduler(): 获取进程的调度策略。
    • sched_yield(): 使当前进程放弃CPU,以便其他进程可以运行。
  5. 其他:

    • alarm(): 设置一个定时器,当定时器超时时会发送SIGALRM信号到进程。
    • sleep(): 暂停进程指定的秒数。
    • usleep(): 暂停进程指定的微秒数。
    • nanosleep(): 暂停进程指定的纳秒数。

以上只是与进程控制直接相关的一些基本API。在实际应用中,还有许多其他与进程相关的函数和工具。