io.launcherlibrary on Unix, the
stdinstream became a blocking file descriptor, and thus Factor threads did not run while the listener was waiting for input.
This was happening because the launcher forks, disables non-blocking mode on the stdio descriptors, then execs the child process; trouble is, I didn't realize that the nonblocking flag is shared between the two processes, much like the file pointer is shared.
The correct solution is then to have the Factor VM start a thread which reads from
stdinand writes to a pipe. The other end of the pipe can be opened in non-blocking mode and made available to Factor's multiplexer.
On Windows, we already have this problem because the command prompt cannot be used with I/O completion ports. Looks like it is time to implement the threaded blocking I/O and solve this problem on both platforms.