Grabing C(++) stdout

Chris via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jul 23 08:30:52 PDT 2014


On Wednesday, 23 July 2014 at 15:27:23 UTC, John Colvin wrote:
> On Wednesday, 23 July 2014 at 15:22:41 UTC, Chris wrote:
>> On Wednesday, 23 July 2014 at 15:12:13 UTC, John Colvin wrote:
>>> On Wednesday, 23 July 2014 at 14:53:35 UTC, Chris wrote:
>>>> Short question: how can I grab the stdout written to by 
>>>> C(++), i.e.
>>>>
>>>> C code:
>>>>
>>>> fwrite(...);
>>>>
>>>> std.cstream will be replaced sooner or later.
>>>
>>> I don't think I understand the question. stdout is the same 
>>> file handle, doesn't matter whether that's using c++'s cout, 
>>> c's stdout in stdio.h or D's std.stdio.stdout
>>>
>>>
>>> writeln("hello world");
>>>
>>> is just short for
>>>
>>> stdout.writeln("hello world");
>>>
>>>
>>> also, if you want c io functions, import core.stdc.stdio;
>>>
>>>
>>> If you're wanting to grab the output from another process, 
>>> take a look at std.process
>>
>> It's a small library written in C++. I can either load it 
>> dynamically or incorporate it into my program. Either way, 
>> when the C++ part does its job, I can see the correct output 
>> in the console window, but I cannot grab it. After analyzing 
>> the C++ code, it seems that it uses fwrite and writes to 
>> stdout.
>>
>> When I grab stdout I only get the output from the D part, not 
>> from the C++ part.
>
> What do you mean by "grab"?

Redirect it from stdout to somewhere else. If I do something like 
this (based on an admittedly old example)

std.c.stdio.freopen("test.txt".ptr, "w+", dout.file);

If I have writeln("Bla");

"Bla" is in the text file. But the string from C++ is not in 
there.



More information about the Digitalmars-d-learn mailing list