linux睡眠等待中断怎么设置
linux睡眠等待中断怎么设置详细介绍
在 Linux 里,让进程睡眠直至被中断可通过不同的方法实现,下面为你介绍几种常见情形。
1. 使用
sleep命令结合信号处理
在 Shell 脚本里,你能够运用sleep命令使脚本睡眠,同时借助信号处理机制在收到特定信号时中断睡眠。以下是一个示例:
bash
interrupt_sleep SIGINT
在上述代码中:
- 定义了
interrupt_sleep函数,其功能是在收到指定信号时输出提示信息并退出脚本。 - 利用
trap命令捕获SIGINT信号(也就是用户按下Ctrl + C),并在收到该信号时调用interrupt_sleep函数。 - 借助
sleep命令让脚本睡眠 300 秒,若在睡眠期间收到SIGINT信号,睡眠就会被中断。
2. 在 C 语言程序中使用
pause和信号处理
在 C 语言程序里,你可以使用pause函数让进程睡眠,直到收到信号。下面是一个示例:
c
signum
SIGINT sigint_handler
在上述代码中:
- 定义了
sigint_handler函数,其作用是在收到SIGINT信号时输出提示信息并退出程序。 - 运用
signal函数注册sigint_handler函数来处理SIGINT信号。 - 调用
pause函数让进程睡眠,直到收到信号。
3. 使用
usleep或
nanosleep(更精确的睡眠)
如果你需要更精确的睡眠,可使用usleep(以微秒为单位)或nanosleep(以纳秒为单位)函数。以下是一个使用nanosleep的示例:
c
signum
SIGINT sigint_handler
req rem
reqtv_sec
reqtv_nsec
req rem
在上述代码中:
- 同样定义了
sigint_handler函数来处理SIGINT信号。 - 利用
nanosleep函数让进程睡眠 5 秒,若在睡眠期间收到SIGINT信号,nanosleep会被中断,并且返回错误。