Hi,

I have a problem that could benefit from more Windows expertise than I currently have.

The proposal to use NIO Pipes to provide Selectable Channels as Peter Levert proposed in [1] works fine on Linux. On Windows, it seems to work ok when the output of the process is handled as a channel but there is an anomaly when trying to use a Channel to send input to the process.

The NIO Pipe implemention on Windows conveniently uses a Socket to localhost: for the Pipe. The handles for the underlying ends of the socket are appropriately sent to the CreateProcess API
when the process is created.

But the child processes produce errors such as:
 cat: -: Bad Address
or  bad parameter

I suspect that the child process is trying to read from the socket handle using an ordinary
file read.

In the other direction in which the output from the child is written to the network socket seem to work ok.
But I'm not sure if it is reliable.

Suggestions welcome on ways to setup the Socket so it would work or alternatives.
Webrev: http://cr.openjdk.java.net/~rriggs/webrev-selectable-4483582/

As Peter proposed, using Selectable channels is optional depending on the provider and OS combinations. The easy way out is to just say Channels do not work for sending
input to a process on Windows.

Thanks, Roger


[1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2015-April/032830.html

[2] Webrev:http://cr.openjdk.java.net/~rriggs/webrev-selectable-4483582/

Reply via email to