C 库函数 - pause()
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;
}
#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
函数挂起期间,进程的执行被暂停,直到捕获到信号。 - 处理信号时要注意信号安全,信号处理程序应尽量简短,只执行安全的操作。