现在位置: 首页 > C 教程 > 正文

C 库函数 - pause()

C 标准库 - <signal.h> C 标准库 - <signal.h>

pause 函数是 C 标准库中的一个函数,用于使进程挂起(暂停执行),直到捕获到一个信号。此函数定义在 <unistd.h> 头文件中。

语法

int pause(void);

参数

pause 函数不接受任何参数。

返回值

  • 成功时 pause 函数不返回,因为进程被信号处理程序中断。
  • 失败时返回 -1,并将 errno 设置为 EINTR,表示函数因信号中断。

实例

以下是一个使用 pause 函数的示例程序。该程序设置一个信号处理程序,在捕获到 SIGINT 信号(通常由 Ctrl+C 触发)时解除挂起。

实例

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

// 信号处理程序
void handle_sigint(int sig) {
    printf("Caught signal %d\n", sig);
}

int main() {
    // 设置 SIGINT 的信号处理程序
    signal(SIGINT, handle_sigint);

    // 挂起进程,等待信号
    printf("Waiting for SIGINT (press Ctrl+C)...\n");
    pause();

    printf("Exiting...\n");
    return 0;
}

编译并运行程序后,输出将是:

Waiting for SIGINT (press Ctrl+C)...

当按下 Ctrl+C(发送 SIGINT 信号)时,输出将是:

解释

  • signal(SIGINT, handle_sigint);:设置 SIGINT 的信号处理程序为 handle_sigint
  • pause();:挂起进程,等待信号到达。当捕获到 SIGINT 信号时,handle_sigint 函数被调用。
  • 信号处理程序执行后,pause 函数返回 -1,程序继续执行后续的代码。

注意事项

  • pause 函数通常用于在信号驱动的程序中,使进程挂起等待特定信号。
  • pause 函数挂起期间,进程的执行被暂停,直到捕获到信号。
  • 处理信号时要注意信号安全,信号处理程序应尽量简短,只执行安全的操作。

C 标准库 - <signal.h> C 标准库 - <signal.h>