我有一个命令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,它也能正常工作。