2017-04-27 16 views
6

के रूप में बनी हुई है, मैं अपने लॉग सर्वर पर लॉग इन कर रहा हूं ताकि उनमें से कोई भी विंडो में प्रदर्शित हो सके, हालांकि जब मैं अपना एप्लिकेशन बंद करता हूं, तो रिमोट पूंछ प्रक्रिया सर्वर पर सक्रिय होती है।QProcess द्वारा शुरू की गई दूरस्थ रिमोट प्रक्रिया ज़ोंबी

दोहराव ज़ोंबी प्रक्रियाओं की एक बड़ी मात्रा का उत्पादन करता है।

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 एसएस सत्र को समाप्त नहीं करता है?

उत्तर

3

ssh -t server bash -c \"tail -F -n 0 /var/log/logfile.log\" समस्या हल करता है।

इसका मतलब है कि एसएसएच कनेक्शन समाप्ति पूंछ को उचित रूप से अग्रेषित नहीं किया गया है, लेकिन इसे रिमोट बैश के लिए सही ढंग से अग्रेषित किया गया है, जिसने पूंछ को आवश्यकतानुसार समाप्त कर दिया है।

संबंधित मुद्दे