我将日志拖到日志服务器上,以在窗口中显示任何日志,但是,当我关闭应用程序时,远程拖尾进程在服务器上仍然处于事件状态。

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

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 session 吗?

最佳答案

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

这意味着ssh连接终止未正确转发到尾部,但已正确转发到远程bash,后者随后根据需要终止了尾部。

关于c++ - 由QProcess启动的嵌套远程进程仍然是僵尸,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43649399/

10-11 22:35
查看更多