Spawning a console in Windows (similar to forkpty on linux)

Adam D. Ruppe via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat May 9 16:32:48 PDT 2015


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.


More information about the Digitalmars-d-learn mailing list