On Saturday, 9 May 2015 at 13:00:01 UTC, wobbles wrote:
On Linux, I'm able to edit a file descriptor after I've created
it to tell it to read/write asynchronously, I cant seem to find
anything similar on windows however.
Asynchronous I/O on Windows is called "Overlapped I/O". It is a
bit involved to use though, especially since D by default doesn't
come with all the necessary headers. You can download the win32
api bindings or you can just declare the bits as needed.
My terminal emulator uses overlapped I/O and a spawned process
(and on Linux, it uses forkpty!) to talk to ssh on Windows.
https://github.com/adamdruppe/terminal-emulator/blob/master/terminalemulator.d
I had to write a function to make an async pipe, then spawn a
process using them, then get and send data. I also declared all
the needed functions myself.
A lot of code to go through but it is a working example... a few
things to look for are MyCreatePipeEx, CreateProcess, the word
'overlapped', ReadFileEx, and the simpledisplay.d library it
imports also uses SleepEx which lets other things trigger.