Phlip wrote: > Rubinistas: > > #include "C:\ruby\lib\ruby\1.8\i386-mswin32\ruby.h" > #pragma comment(lib, "C:/ruby/lib/msvcrt-ruby18.lib") > > int main(int argc, char* argv[]) > { > ruby_init(); > ruby_script("embedded"); > > FILE * out = freopen("c:/temp/redirect.txt", "w", stdout); > FILE * err = freopen("c:/temp/redirect.txt", "w", stderr); > > rb_eval_string("puts 'hello world'\n"); > return 0; > } > > That code expects to evaluate a Ruby script, inside C/C++, and capture its > output into c:/temp/redirect.txt. > > Ideally, I'd like to get the results into a stream, so I can pull it in > realtime as Ruby pushes it. But reading that temp file is an acceptable > compromise. > > However, that code simply crashes, deep inside malloc.c inside Ruby. Anyone > know why, or if there's a better way? What about something based on rb_eval_string("$stdout.reopen ..."); or rb_eval_string("$stdout = File.open(...)");