retry.pyという名前のコマンドが失敗した場合、繰り返しコマンド用の単純なラッパースクリプトを作成しました。しかし、私は子コマンドの出力を見たいので、私はいくつかのptyトリックを引き出す必要がありました。これはrsyncのようなプログラムではうまくいきますが、scpのようなプログラムでは、プログレスメーターのようなものを表示するために追加のテストを適用します。私はラッパースクリプトかかわらず実行すると失敗する私はptyの下で実行しているプロセスのターミナルフォアグラウンドプロセスグループをどのように設定しますか?
getpgrp() == tcgetpgrp(STDOUT_FILENO);
:
SCPコードが広くあるテストを持っています。
./tty_tests
isatty reports 1
pgrps are 13619 and 13619
と::私はとtcsetpgrpを(使用して試した
./retry.py -v -- ./tty_tests
command is ['./tty_tests']
isatty reports 1
pgrps are 13614 and -1
child finished: rc = 0
Ran command 1 times
)PTY fdの年代が、その上IOCTLとして終わるあなたは私の簡単なtty_test.cのテストケースと見ることができるようにptysの結果は-EINVALになります。可能であれば、私はPythonのサブプロセス機械を使い続けたいと思っています。あるいは、手動fork/execve'ingが必要です。
私は試してみましたが、何の効果もありません: > retry.py -v - 〜/ mysrc/retry.git/tty_tests コマンドは['/home/ajb/mysrc/retry.git/tty_tests '] isattyレポート1 pgrpsは28268と-1です。 子が終了しました:rc = 0 Ranコマンド1回 – stsquad
完全なコードを貼り付けることができますか? –
OH!私はちょうどあなたの質問でretry.pyへのリンクを与えたことに気づいた。私は、それが役に立つと思って、ホスト名のように見えるものからリンクを作ることを試みるだけのstackoverflowだと思っていました。私は見てみましょう。 –