0

Linux サーバーで実行される Python プログラムを作成しています。いくつかのログ ファイルを監視し、特定のキーワードに基づいて、そのログ ファイルの行を GUI に表示します。

プログラムでユーザーがダブルクリックした行を示す「less」を含むターミナル ウィンドウを開く新機能を追加しました。

私の問題は次のとおりです。プログラムをローカル (コンピューター上) で実行すると、完全に動作します。しかし、SSH 経由でメイン サーバーに接続しているときにメイン サーバーからプログラムを実行すると、プログラムは正常に実行されますが、行の 1 つをダブルクリックすると、コンソール ウィンドウがすばやく開いたり閉じたりします。

「Less ターミナル」を開くコードは次のとおりです。

p = subprocess.Popen(args = ["gnome-terminal", "--command = less -p " + "\"" +searchString + "\"" " -j 10 " + "\"" + path + "\""], stdout = subprocess.PIPE) 

どうすれば開いたままにできますか?

PS を追加するshell = TRUEと、結果のない新しいターミナル ウィンドウが開きlessます。

4

2 に答える 2

2

私の問題は ssh とは関係ありませんでした。ローカルマシンで再作成できました。プログラムをローカルでテストするときは、テスト用に短いパターン文字列を使用しましたが、サーバーに移動して実際の文字列を使用し始めたとき、それらは大きすぎました!

何が起こったか: less99 文字より大きいパターンを指定しました。そして、「ungetcc オーバーフロー」という既知のバグが見つかりました。これは、その後 のバージョン 438 で修正されましたless

于 2012-05-02T10:42:41.823 に答える