在 Linux 环境中,如何向进程发送终止信号,同时确保该进程返回的退出代码为 0?我是否必须为此做一些花哨的 GDB 魔术,或者是否存在我不知道的花哨终止信号?
测试用例:
cat; echo $?
killall cat
尝试各种终止信号只会提供不同的返回信号,例如 129、137 和 143。我的目标是终止脚本运行的进程,但让脚本认为它已成功。
答案1
答案2
不。当 shell 捕获到它时SIGCHLD
,它会无条件地将返回值适当地设置为非零值,因此这需要修改脚本或 shell。
答案3
这行代码对我有用:
/bin/bash -c '/usr/bin/killall -q process_name; exit 0'
答案4
我不确定,但如果收到任何列出的信号,它将以 0 退出。您可以执行其他操作,包括调用函数等。
#!/bin/bash
trap 'exit 0' SIGINT SIGQUIT SIGTERM