忽略带有陷阱的 SIGHUP,同时仍然能够接收输出和发送输入

忽略带有陷阱的 SIGHUP,同时仍然能够接收输出和发送输入

所以我已经知道可以通过执行以下操作来忽略 HUP:

trap "command" HUP

但由于该过程完全在后台进行,是否可以执行相同的操作但仍然能够将输入发送到所述命令? (不使用可能的替代方案screen,例如tmux等)

如果是的话,这可以用作类似帖子的替代方法一个(screen用作解决方案)。

例如:

trap "echo HUP received" HUP; read X; echo input was $X

这有效,但仅适用于发送输入。它不显示它的输出,因此如果使用的进程trap是交互式的(ncurse 等),则限制使用。

因此,如果想trap在命令上使用(忽略 HUP),并自动执行某些任务expect(需要输出):

#!/bin/bash

read -s PWD

/usr/bin/expect -d <<EOF
set timeout -1
spawn trap "/usr/bin/vncserver -geometry 1366x768 :1" HUP
expect "Password:"
send "$PWD\r"
expect "Verify:"
send "$PWD\r"
expect "Would you like to enter a view-only password"
send "n\r"
expect eof
EOF

那是行不通的。 (除非使用诸如 等替代方案screentmux

相关内容