2017-04-27 32 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,然後根據需要終止尾部。