Jump to page: 1 2
Thread overview
Grabing C(++) stdout
Jul 23, 2014
Chris
Jul 23, 2014
Adam D. Ruppe
Jul 23, 2014
John Colvin
Jul 23, 2014
Chris
Jul 23, 2014
John Colvin
Jul 23, 2014
Chris
Jul 23, 2014
Chris
Jul 23, 2014
Martijn Pot
Jul 23, 2014
FreeSlave
Jul 24, 2014
Chris
Jul 23, 2014
Adam D. Ruppe
Jul 23, 2014
FreeSlave
July 23, 2014
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.
July 23, 2014
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.

If it is another program, try this:

http://dlang.org/phobos/std_process.html#pipeProcess


If you want to grab something written by another part of your same program... I'm not sure.
July 23, 2014
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
July 23, 2014
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.
July 23, 2014
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"?
July 23, 2014
It's still unclear. What exactly do you mean my grabbing? Please provide some minimal example where the problem occurs.
July 23, 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.

July 23, 2014
The C++ code does this:

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
// stream is stdout

and text appears in the console (a string).

I don't how to grab the text that is written to console. I might have to redirect it from within the C++ code.

July 23, 2014
On Wednesday, 23 July 2014 at 15:35:59 UTC, Chris wrote:
> The C++ code does this:
>
> size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
> // stream is stdout
>
> and text appears in the console (a string).
>
> I don't how to grab the text that is written to console. I might have to redirect it from within the C++ code.

If it can be done offline, I think you can redirect the console output to a file.
July 23, 2014
On Wednesday, 23 July 2014 at 15:35:59 UTC, Chris wrote:
> The C++ code does this:
>
> size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
> // stream is stdout
>
> and text appears in the console (a string).
>
> I don't how to grab the text that is written to console. I might have to redirect it from within the C++ code.

I've created simple example (for Linux) - https://bitbucket.org/FreeSlave/redirect-example/src
It works as expected. Nothing writes to console, but to file.
« First   ‹ Prev
1 2