Thread overview |
---|
February 01, 2017 capture stdout or stderr | ||||
---|---|---|---|---|
| ||||
is it possible to intercept the STDOUT or STDERR and capture the output into a variable ? some pseudocode to explain what I mean string[] output_buffer; stdout.capture_to(output_buffer); writeln("test 1"); # not printed writeln("test 2"); # not printed stdout.release(output_buffer); writeln("test 3"); # printed writeln(output_buffer); # prints '["test 1","test 2"]' |
February 01, 2017 Re: capture stdout or stderr | ||||
---|---|---|---|---|
| ||||
Posted in reply to Emil | On Wednesday, 1 February 2017 at 01:08:19 UTC, Emil wrote:
> is it possible to intercept the STDOUT or STDERR and capture the output into a variable ?
>
>
> some pseudocode to explain what I mean
>
> string[] output_buffer;
> stdout.capture_to(output_buffer);
>
> writeln("test 1"); # not printed
> writeln("test 2"); # not printed
>
> stdout.release(output_buffer);
>
> writeln("test 3"); # printed
> writeln(output_buffer); # prints '["test 1","test 2"]'
No.
Please keep in mind, that in Linux, for example, stdout is a file ...
writeln() interacts with OS API, which, of course, has nothing to do with internal data structures of your application.
What you could probably do is replace writeln() with a custom logger. In your logger implementation you can add such functionality.
|
February 02, 2017 Re: capture stdout or stderr | ||||
---|---|---|---|---|
| ||||
Posted in reply to Emil | On Wednesday, 1 February 2017 at 01:08:19 UTC, Emil wrote:
> is it possible to intercept the STDOUT or STDERR and capture the output into a variable ?
>
>
> some pseudocode to explain what I mean
>
> string[] output_buffer;
> stdout.capture_to(output_buffer);
>
> writeln("test 1"); # not printed
> writeln("test 2"); # not printed
>
> stdout.release(output_buffer);
>
> writeln("test 3"); # printed
> writeln(output_buffer); # prints '["test 1","test 2"]'
If you *had* to, you should be able to hack it by reopening the file descriptors for standard output or error (at least on *nix), but is there a specific reason you want to do this, or do you just want formatted output to a variable?
|
February 02, 2017 Re: capture stdout or stderr | ||||
---|---|---|---|---|
| ||||
Posted in reply to angel | On Wednesday, 1 February 2017 at 14:38:18 UTC, angel wrote: > On Wednesday, 1 February 2017 at 01:08:19 UTC, Emil wrote: >> is it possible to intercept the STDOUT or STDERR and capture the output into a variable ? ..... >> writeln(output_buffer); # prints '["test 1","test 2"]' > > No. > Please keep in mind, that in Linux, for example, stdout is a file ... > writeln() interacts with OS API, which, of course, has nothing to do with internal data structures of your application. > What you could probably do is replace writeln() with a custom logger. In your logger implementation you can add such functionality. Thank you. |
Copyright © 1999-2021 by the D Language Foundation