分配 pty 的包装器(与 nohup 相反)

分配 pty 的包装器(与 nohup 相反)

我有一个命令foo(由于我们不需要讨论的原因)需要分配一个 pty,即foo成功但nohup foo失败。

当没有 pty 时分配 pty 的最简单方法是什么?screen -D -m foo看起来有点矫枉过正, an 不返回退出代码(我需要)。保存退出代码,它可以工作。

答案1

使用expect,例如

#!/usr/bin/env expect -f

spawn -noecho ssh localhost "sleep 3; false"
catch wait status
exit [lindex $status 3]

答案2

虽然@thrig的答案可能会起作用expect(并且我赞成它),但我做了一个小小的修改pty.c史蒂文斯 出发UNIX® 环境中的高级编程-r如果指定则返回退出代码。结果是这里。这似乎可以毫不费力地完成任务。

答案3

script /dev/null

是最简单、最便携的解决方案(尽管默认情况下在 android 或 busybox 上仍然不可用)。

即使它的 stdin 和 stdout 不是 tty,它也能正常工作。

相关内容