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

Nested remote process started by QProcess remains as zombie

我正在跟踪我的日志服务器上的日志以在 window 中显示其中的任何一个,但是当我关闭我的应用程序时,远程跟踪进程在服务器上仍然处于活动状态。

重复产生大量僵尸进程。

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" 启动时关闭控制台 window。

难道是QProcess没有终止ssh会话?

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

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