如何在子 tmux 进程中使用 trap?

如何在子 tmux 进程中使用 trap?

我希望在子 tmux 进程终止时执行一个函数。

考虑以下脚本:

#!/bin/bash

function foo
{
  echo "foo exit"
}

trap foo SIGHUP

tmux

该脚本启动 tmux。然后,从 tmux 会话内部运行:

$ tmux kill-session

然后 tmux 关闭,我看到:

[exited]

foo函数没有被调用,我猜是因为父进程没有收到 SIGHUP 信号。

我希望在关闭foo时执行该函数。tmux我怎样才能实现这个目标?

答案1

您需要将信号替换为SIGCHLD

trap foo SIGCHLD

如果分叉的子进程停止/终止,该信号将发送到父进程。正如您提到的,虽然SIGHUP仅影响当前进程/脚本。

相关内容