由 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,然后根据需要终止尾部。
我正在跟踪我的日志服务器上的日志以在 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,然后根据需要终止尾部。