2017-04-27 30 views
6

Kończę logi na moim serwerze logów, aby wyświetlić dowolne z nich w oknie, jednak kiedy zamykam aplikację, zdalny proces końcowy pozostaje aktywny na serwerze.Zagnieżdżony zdalny proces rozpoczęty przez QProcess pozostaje jako zombie

Powtarzanie powoduje powstanie ogromnej ilości procesów zombie.

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

W konsoli opcja ssh -t obsługuje wyjście terminalu; Chcę odtworzyć to zachowanie.

W destruktorze nazywam process_log_watcher_->close();, ale to nie pomaga. Zachowuje się inaczej niż zamknięcie okna konsoli z uruchomionym ssh -t server "tail -F -n 0 /var/log/logfile.log".

Czy to możliwe, że QProcess nie kończy sesji ssh?

Odpowiedz

3

ssh -t server bash -c \"tail -F -n 0 /var/log/logfile.log\" rozwiązuje problem.

Oznacza to, że terminacja połączenia ssh nie jest poprawnie przekazywana do końca, ale jest poprawnie przekazywana do zdalnej bash, która następnie kończy się w razie potrzeby.

Powiązane problemy