运行 已分离 TTY 的进程

Running a process with the TTY detached

我想从终端 运行 linux 控制台命令,防止它自己访问 TTY(例如,当控制台命令试图向用户请求密码 - 这应该会失败)。我最接近的解决方案是使用这个包装器:

temp=`mktemp -d`
echo "$@" > $temp/run.sh
mkfifo $temp/out $temp/err
setsid sh -c "sh $temp/run.sh > $temp/out 2> $temp/err" &
cat $temp/err 1>&2 &
cat $temp/out
rm -f $temp/out $temp/err $temp/run.sh
rmdir $temp

这 运行 是没有 TTY 访问的预期命令,但是通过 FIFO 管道传递 stdout/stderr 输出由于某种原因不起作用。即使进程写入 stdout 或 stderr,我最终也没有任何输出。

有什么想法吗?

嗯,谢谢大家的观看。原来脚本已经包含了一个可行的方法。它只是包含一个导致它失败的拼写错误。我在问题中更正了它,以备将来参考。