コマンドfoo
があります。このコマンドは、(説明する必要がないため)ptyを割り当てる必要があります。つまり、foo
は成功しますが、Nohup foo
失敗します。
Ptyがない場合にptyを割り当てる最も簡単な方法は何ですか? screen -D -m foo
やり過ぎのようですが、終了コード(必要なもの)が返されません。終了コードを除いて、それは機能します。
expect
を使用します。例:.
#!/usr/bin/env expect -f
spawn -noecho ssh localhost "sleep 3; false"
catch wait status
exit [lindex $status 3]
@thrigの答えはおそらくexpect
で機能しますが(そして私はそれを賛成しました)、私は 小さな変更 をStevensからpty.c
に変更しました の高度なプログラミングUNIX®Environment-r
が指定されている場合に終了コードを返します。結果は ここ です。これは最小限の手間でトリックを行うようです。