gpt4 book ai didi

bash - 为组中的进程抑制 SIGINT

转载 作者:行者123 更新时间:2023-11-29 09:33:02 25 4
gpt4 key购买 nike

我有一个 bash 脚本,它启动了 2 个进程:

openocd ...flags... 2>openocd.log &
arm-none-eabi-gdb

在 gdb 中,使用 Ctrl+C 中断执行会导致 openocd 也接收到 SIGINT,因此它会停止。我试图通过以下方式捕获 SIGINT 并将其直接重新发布到 gdb:

trap 'kill 2 $!' INT

但是除了需要 root 之外,它无论如何都不起作用:

./dbg.sh: 1: kill: No such process

是否有优雅的方式来执行任务?

__

好吧,运行带有调试选项的脚本很有帮助。但我仍然遇到奇怪的行为。这是我的脚本的内容:

#!/bin/sh
set -vx
trap 'killall -s2 arm-none-eabi-gdb-py' 2
openocd -f ...flags... 2>openocd.log & arm-none-eabi-gdb-py

当我从不同的 tty 运行 killall -s2 arm-none-eabi-gdb-py - 它终止远程目标的执行并且不关闭 openocd,但通过 Ctrl+C 返回:

+ killall -s2 arm-none-eabi-gdb-py
arm-none-eabi-gdb-py: no process found

似乎 trap 根本没有抑制信号...更改为 trap 'ps -ef' INT 显示,当 trap 命令执行时,openocd 和 gdb 已经关闭。

最佳答案

您的指令中是否缺少一个“&”(它会给出那个)?

openocd -f ...flags... 2>openocd.log &**&** arm-none-eabi-gdb-py

关于bash - 为组中的进程抑制 SIGINT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49338987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com