QProcess启动的嵌套远程进程仍然是僵尸

时间:2017-04-27 05:36:37

标签: c++ linux ssh qt4

我在日志服务器上拖尾日志以在窗口中显示任何日志,但是当我关闭我的应用程序时,远程尾部进程在服务器上保持活动状态。

重复会产生大量的僵尸进程。

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会话吗?

1 个答案:

答案 0 :(得分:3)

ssh -t server bash -c \"tail -F -n 0 /var/log/logfile.log\"解决了这个问题。

这意味着ssh连接终止没有正确地转发到尾部,但是它被正确地转发到远程bash,然后根据需要终止尾部。