[GRASS-user] Using GRASS_BATCH_JOB but with a c++ program

2010-05-17 Thread rabotin

Dear all,
I'm trying to launch a grass work with a script to automate calcul.
I try successfully with calling a shell script with GRASS_BATCH_JOB 
parameter (which call the test_algo.sh)

with the following shell script

#!/bin/bash
  chmod u+x $HOME/test_algo.sh
  export GRASS_BATCH_JOB=$HOME/test_algo.sh
  grass ~/grassdata/Roujan/simon9/
  unset GRASS_BATCH_JOB

I'm trying now to do the same thing with a c++ program which call the 
same shell script (test_algo.sh) and having the following lines (here 
the .cpp file):


#include stdio.h
#include stdlib.h

const char chmod[]=chmod u+x /home/rabotin/test_algo.sh;
const char expor[]=export GRASS_BATCH_JOB=/home/rabotin/test_algo.sh;
const char grass[]=grass -text ~/grassdata/Roujan/simon9/;
const char unset[]=unset GRASS_BATCH_JOB;

int main()
{
   printf (Launching grass test!);
 system(chmod);
 system(expor);
 system(grass);
 system(unset);
 printf (Launched grass test!);

   return 0;
}


But it doesnt' work well: GRASS is well launched, but no call to 
test_algo.sh and GRASS doesnt' end successfully


Can anyone have any idea to help me ?

Friendly,

Michael Rabotin



--
*

Michaël Rabotin
Ingénieur d'étude en géomatique

Laboratoire d'étude des Interactions Sol, Agrosystème et Hydrosystème
UMR LISAH SupAgro-INRA-IRD
Bat. 24
2 place Viala
34060 Montpellier cedex 1 
FRANCE


Téléphone :  33 (0)4 99 61 23 85
Secrétariat : 33 (0)4 99 61 22 61
Fax : 33 (0)4 67 63 26 14
E-mail : rabo...@supagro.inra.fr

*

___
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user


Re: [GRASS-user] Using GRASS_BATCH_JOB but with a c++ program

2010-05-17 Thread Glynn Clements

rabotin wrote:

 Dear all,
 I'm trying to launch a grass work with a script to automate calcul.
 I try successfully with calling a shell script with GRASS_BATCH_JOB 
 parameter (which call the test_algo.sh)
 with the following shell script
 
 #!/bin/bash
chmod u+x $HOME/test_algo.sh
export GRASS_BATCH_JOB=$HOME/test_algo.sh
grass ~/grassdata/Roujan/simon9/
unset GRASS_BATCH_JOB
 
 I'm trying now to do the same thing with a c++ program which call the 
 same shell script (test_algo.sh) and having the following lines (here 
 the .cpp file):
 
 #include stdio.h
 #include stdlib.h
 
 const char chmod[]=chmod u+x /home/rabotin/test_algo.sh;
 const char expor[]=export GRASS_BATCH_JOB=/home/rabotin/test_algo.sh;
 const char grass[]=grass -text ~/grassdata/Roujan/simon9/;
 const char unset[]=unset GRASS_BATCH_JOB;
 
 int main()
 {
 printf (Launching grass test!);
   system(chmod);
   system(expor);
   system(grass);
   system(unset);
   printf (Launched grass test!);
 
 return 0;
 }
 
 
 But it doesnt' work well: GRASS is well launched, but no call to 
 test_algo.sh and GRASS doesnt' end successfully
 
 Can anyone have any idea to help me ?

Environment variables are per-process. Each system() call spawns a new
shell process, and the export command will only affect the process in
which it's run, not any other processes. From a C/C++ program, use
putenv() instead, e.g.:

system(chmod);
putenv(GRASS_BATCH_JOB=/home/rabotin/test_algo.sh);
system(grass);

-- 
Glynn Clements gl...@gclements.plus.com
___
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user