Das Rohr wird von nio
geöffnet. Ich fand den Schreib-Endpunkt geschlossen, aber den Lese-Endpunkt geöffnet. Ich habe meinen Code überprüft, zwei Endpunkte sind immer zusammen geschlossen. Also, gibt es eine Möglichkeit, dass die Leitung ohne Anruf close
Funktion von mir selbst geschlossen werden?Rohr geschlossen ohne Ruf schließen
ps. Der Code ist der Quellcode von zero ice
. Ich habe das Problem in der Produktionsumgebung gefunden. Der Codepfad ist IceInternal.Selector
, die Pipe ist _fdIntrRead
und _fdIntrWrite
. Meine ice
Version ist 3.3.1
.
Ich habe die Antwort bekommen. NIO
schließt Kanal, wenn der aktuelle Thread unterbrochen ist. Es ist ein Fehler von ice
, der in Version 3.6
behoben wurde.
Wahrscheinlich haben Sie es irgendwo geschlossen. Ich empfehle Aufnahme, wo Sie ein Rohr als eine Protokollnachricht für jetzt schließen. –
@PeterLawrey. Die Variable ist privat. Also muss es in der einzigen Datei geschlossen sein. – phyxnj
Verwenden Sie Test-mit-Ressourcen? https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html Das könnte erklären, warum es automatisch schließt. –