MST
星途 面试题库

面试题:Bash中信号处理与陷阱机制基础应用

请解释Bash中trap命令的基本语法,并举例说明如何使用trap捕获SIGINT信号,在用户按下Ctrl+C时执行一段自定义的清理脚本。
20.0万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试

1. trap命令基本语法

trap [commands] [signals]

  • commands:是当指定信号发生时要执行的命令或脚本。可以是单个命令,也可以是用分号(;)或换行符分隔的多个命令。
  • signals:是要捕获的信号列表。常见信号有 SIGINT(中断信号,通常由Ctrl+C触发)、SIGTERM(终止信号)、EXIT(脚本正常或异常退出时触发)等。

2. 捕获SIGINT信号并执行自定义清理脚本示例

假设我们有一个名为cleanup.sh的清理脚本,内容如下:

#!/bin/bash
echo "执行清理操作"
# 这里可以添加实际的清理命令,比如删除临时文件等

并确保该脚本有可执行权限:chmod +x cleanup.sh

然后在主脚本中使用 trap 捕获 SIGINT 信号并执行cleanup.sh,示例代码如下:

#!/bin/bash

trap './cleanup.sh' SIGINT

# 模拟主脚本的工作
while true; do
    echo "脚本正在运行,按Ctrl+C中断"
    sleep 1
done

在上述示例中,当用户按下Ctrl+C(触发SIGINT信号)时,会执行cleanup.sh脚本中的清理操作。