disabling and enabling console output

Alex AJ at gmail.com
Thu May 16 17:42:17 UTC 2019


On Thursday, 16 May 2019 at 17:19:13 UTC, Vladimir Panteleev 
wrote:
> On Thursday, 16 May 2019 at 17:18:01 UTC, Alex wrote:
>> adding
>>
>> 	int dup(int) @trusted;
>> 	int dup2(int, int) @trusted;
>> 	int close(int) @trusted;
>> 	int open(in char*, int, ...) @trusted;
>
> Be sure to make them extern(C).
>
> Sorry, I haven't tried it, I'm guessing that it should work 
> based on:
> https://github.com/digitalmars/dmc/blob/master/include/io.h#L142-L147

Ok, the issue is because I was adding

	import core.stdc.stdio, core.stdc.stdio;
	extern (C):
		@system:
		nothrow:
		@nogc:
		static int _dup(int);
		static int dup2(int, int);

directly inside the PushFD struct... I marked them static and it 
still didn't help. I don't know it's adding the class for the 
lookup:

PushFD!(1).PushFD.dup2(int, int)" 
(_D3mM__T6PushFDVii1ZQm4dup2UNbNiiiZi)

Unfortunately the code is crashing because _open or _sopen is 
returning -1 for /dev/null

Works fine nul, NUL, and CONOUT$ but does not block the output.


I'm not sure if they are failing to block or if they are blocking 
what is being opened(and not the original console). That is, do I 
need to not open and simply close stdout?





More information about the Digitalmars-d-learn mailing list