Unfortunately, read() is 1) uninterruptilbe 2) Unlike sockets, close() or even Thread.stop() won't cancel a read pipe operation on Windows
11.02.2018 0:27, Remi Forax пишет: > Hi Basin, > or instead of relying on an undocumented behaviour, you can use any overloads > of read(), if it returns -1, it's the ends of the stream. > > cheers, > Rémi > > ----- Mail original ----- >> De: "Basin Ilya" <basini...@gmail.com> >> À: "core-libs-dev" <core-libs-dev@openjdk.java.net> >> Envoyé: Samedi 10 Février 2018 22:15:18 >> Objet: FileOutputStream.available() and pipe EOF > >> Hi list. >> >> My question relates to streams returned by >> java.lang.Process.getInputStream() >> >> On Linux calling available() after the other side of the pipe was closed >> will throw: >> >> java.io.IOException: Stream Closed >> >> This is very handy, because you can distinguish EOF and a pause in >> transmission. >> >> On Windows same Oracle JDK version 1.8.0_161 behaves in a traditional >> manner and available() returns 0 in both cases. Will this ever change?