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

wobbles via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon May 11 14:43:08 PDT 2015


On Saturday, 9 May 2015 at 23:32:49 UTC, Adam D. Ruppe wrote:
> 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.

Thanks adam, this is very helpful!


More information about the Digitalmars-d-learn mailing list