2017-04-27 11 views
6

ログサーバーのログをテールしてウィンドウに表示していますが、アプリケーションを閉じるとリモートテールプロセスはサーバー上でアクティブのままです。QProcessで開始されたネストされたリモートプロセスはゾンビのままです

繰り返すと、膨大な量のゾンビプロセスが発生します。

process_log_watcher_->start(QString(
     "ssh -t %1 \"tail -F -n 0 /var/log/logfile.log\"").arg(log_server_)); 

コンソールでは、ssh -tオプションは端末の終了を処理します。私はその行動を再現したい。

デストラクタで私はprocess_log_watcher_->close();と呼んでいますが、それは役に立たないようです。 ssh -t server "tail -F -n 0 /var/log/logfile.log"が起動したコンソールウィンドウを閉じるとは動作が異なります。

QProcessがsshセッションを終了しないことはありますか?

答えて

3

ssh -t server bash -c \"tail -F -n 0 /var/log/logfile.log\"が問題を解決します。

これは、ssh接続の終了が適切にテールに転送されないことを意味しますが、リモートbashに正しく転送され、必要に応じてテールを終了します。

関連する問題