From b.rowlingson at lancaster.ac.uk  Tue Jun  3 20:06:13 2014
From: b.rowlingson at lancaster.ac.uk (Barry Rowlingson)
Date: Tue, 3 Jun 2014 19:06:13 +0100
Subject: [Rd] setting environmental variable inside R function to call C
	function
In-Reply-To: <7dd62e4fe5734fe9af02cce995cfdf83@EX-1-HT0.lancs.local>
References: <7dd62e4fe5734fe9af02cce995cfdf83@EX-1-HT0.lancs.local>
Message-ID: <CANVKczMSHxjHb7rjLvUhMVC-zph4B-aOsD+338=VM6H05g+zjQ@mail.gmail.com>

What does c_fun look like? Here's mine:

#include <stdio.h>
#include <stdlib.h>
void c_fun(){
  printf("TMP is %s\n", getenv("TMP"));
    }

and I then do this at the shell prompt:

R CMD SHLIB c_fun.c

and this at the R prompt:

dyn.load("c_fun.so")
wrapper()

and I get:

> wrapper()
[1] "A"
TMP is A
list()

Is that not what you want?

tldr; works for me.


On Tue, Jun 3, 2014 at 5:55 PM, Bowen Meng <bowen.m04 at gmail.com> wrote:
> wrapper <- function(){
>   Sys.setenv(TMP="A")
>   print(Sys.getenv("TMP"))
>
>   .C("c_fun")
> }
>
>
> As the example above, I hope to set an env var $TMP inside the R function
> "wrapper", which affects the functionality of the C function call "c_fun".
> Also the print line shows that $TMP is set to be "A", but the function call
> of "c_fun" was not affected.
>
> Does anyone know why and how to correctly set the env var for subsequent
> functions?
>
> Thanks,
> BW
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] setting environmental variable inside R function to call C function
Barry Rowlingson