bash - "kill -INT $pid"不会终止进程,但 ctrl+c 会

标签 bash unix

我有一个基本的 bash 脚本,它打印出它的 pid,然后数到 100:

echo $$
for i in {1..100}
do
    echo $i
    sleep 1
done

当我按下 ctrl+c 时,程序将在运行时停止,退出代码为 130。我正在尝试发送一个信号,该信号将模拟 ctrl+c 并导致程序停止并退出代码130.

当我从不同的终端窗口键入“kill -INT”时,没有任何反应,但据我所知,这应该与按 ctrl+c 相同。但是,当我键入“kill -9”时,我可以成功终止程序,尽管退出代码不同。如何使用中断信号停止我的程序,使其以正确的代码退出?

最佳答案

在进程 ID 前加上破折号“-”

kill -SIGINT -<pid>

这将终止进程,退出代码为 130。

UPD:为什么不使用默认情况下由 kill 命令发送的 SIGTERM(15)(没有信号编号或名称)?

关于bash - "kill -INT $pid"不会终止进程,但 ctrl+c 会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57423209/

相关文章:

regex - sed -> 从字符串中替换固定文本和括号

bash - 在bash脚本中执行sudo命令而不显示它

linux - Bash 测试并执行目录模式是否存在

linux - 使用 diff 命令,忽略行尾的字符

c - 读取密码文件时,程序从未遇到 EOF

linux - 每次显示时从两种模式之间获取文本

linux - 使用命令行和完整路径启动 Bash 脚本

json - 从json数据制作表格时出现jq "object cannot be tsv-formatted, only array"错误

macos - 在 Unix 中查找具有特定扩展名的所有文件?

unix - unix shell ksh 中的错误处理