
On Mar 29, 2008, at 6:03 PM, Michael Braun wrote:

> My C code is complex (and obscure), so I'd hate to bore the rest of  
> the list with the details.  But perhaps this simple example will  
> narrow things down. (My shared library is compiled using R CMD  
> SHLIB, and loaded into R using dyn.load("xxx.so").  I call the  
> function using the .C() function.  The application is straight  
> numerical computation, with no fancy graphics or anything like that.)
>
> If I print text using the R API function
>
> 	Rprintf("This is some text\n");
>
> then I see that text, whether I run R from either the terminal or  
> using R.app.  But, if I use, from the standard C library,
>
> 	printf("This is some text\n");
>
> then I see it if I run R in the terminal window, but NOT in R.app.
>
> A more complicated example is if I try to print a gsl vector
>
> 	gsl_vector_fprintf(stdout, X, "%.3f");
>
> The result shows up in the terminal window, but not in R.app.  What  
> I'd like to do is find something to replace stdout that would  
> guarantee that the output goes to the appropriate R window.
>
> I'm not doing anything special to flush output (I'm a new C  
> programmer--is this something I need to do?).  I get this problem if  
> I am trying to print a single line, as above, or a HUGE number of  
> gsl_vectors (it was being caught in an infinite loop of printing  
> vectors--and not seeing the output to let me know I was in the loop-- 
> that led me to this question).
>
> I hope this is detailed enough.

Not really, because what you describe above works as designed:

#include <R.h>
#include <stdio.h>
void foo() {
   Rprintf("Friendly output\n");
   fprintf(stderr, "this goes to stderr\n");
   printf("Hello, world!\n");
}

 > dyn.load("foo.so")
 > .C("foo")
Friendly output
list()
this goes to stderr
Hello, world!

As you can see the stdout output is in gray, stderr is in red and  
regular console output is in black (if you use default colors). All is  
there. (Note, however, the output order is not necessary linear,  
because stdout/err must be captured asynchronously).


> Please let me know if more information is needed.

Which version of R and R.app are you using? Also the output can be  
disabled in the preferences - if you did so, it won't appear. Can you  
see the output of "system('ls')"?

Cheers,
S

[This message also contains rich version of the e-mail to illustrate  
the point. Apologies to plain text recipients.]


>
> On Mar 29, 2008, at 5:24 PM, Simon Urbanek wrote:
>> Michael,
>>
>> On Mar 29, 2008, at 2:23 PM, Michael Braun wrote:
>>
>>> I am a recent convert from Linux to Mac (OS X 10.5.2 on a Mac  
>>> Pro), and  am trying to direct some output from  compiled C code  
>>> to the R.app GUI.  For simple things, of course, I use Rprintf  
>>> from the R API.  But there are other cases (e.g., using the matrix  
>>> print routines in GSL) for which Rprintf is inappropriate.  When I  
>>> was in Linux-land, I could direct the output to stdout with no  
>>> problem (and I can still do that running R from a terminal window  
>>> on OS X).  But if I run my app under R.app, the output never makes  
>>> it to the screen (naturally, because R.app is not standard output).
>>>
>>
>> If we are to assist you, you should tell us more about your  
>> application (the C code), because R.app *does* print stdout and  
>> stderr (just try running system("ls")). Your application is very  
>> likely doing something to prevent the output from being processed  
>> (not flushing the output, printing unterminated lines, not allowing  
>> R to process events...).
>>
>> Cheers,
>> Simon
>>
>>
>>> So, is there an output file that I can use in place of stdout that
>>> will get my output to the R.app GUI (and preferably, to a terminal
>>> window session as well)?
>>>
>>> Thanks!
>>>
>>> Michael
>>>
>>>
>>>
>>>
>>> Michael Braun
>>> Assistant Professor of Management Science (Marketing Group)
>>> MIT Sloan School of Management
>>> One Amherst St., E40-169
>>> Cambridge, MA 02142
>>> braunm@mit.edu
>>> 617-253-3436
>>>
>>> _______________________________________________
>>> R-SIG-Mac mailing list
>>> R-SIG-Mac@stat.math.ethz.ch
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>>
>>>
>>
>
> Michael Braun
> Assistant Professor of Management Science (Marketing Group)
> MIT Sloan School of Management
> One Amherst St., E40-169
> Cambridge, MA 02142
> braunm@mit.edu
> 617-253-3436
>
>
>
>


	[[alternative HTML version deleted]]

