web-dev-qa-db-ja.com

ptyを割り当てるラッパー(Nohupの反対側)

コマンドfooがあります。このコマンドは、(説明する必要がないため)ptyを割り当てる必要があります。つまり、fooは成功しますが、Nohup foo失敗します。

Ptyがない場合にptyを割り当てる最も簡単な方法は何ですか? screen -D -m fooやり過ぎのようですが、終了コード(必要なもの)が返されません。終了コードを除いて、それは機能します。

2
abligh

expectを使用します。例:.

#!/usr/bin/env expect -f

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

@thrigの答えはおそらくexpectで機能しますが(そして私はそれを賛成しました)、私は 小さな変更 をStevensからpty.cに変更しました の高度なプログラミングUNIX®Environment-rが指定されている場合に終了コードを返します。結果は ここ です。これは最小限の手間でトリックを行うようです。

1
abligh