Home > Back-end >  Failing to set environment variable
Failing to set environment variable

Time:08-02

Can someone please help me figure out why I'm not getting the results im supposed to? from the textbook

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char *my_env[] = {"JUICE = peaches and apples", NULL};
    execle("diner info", "diner info", "4", NULL, my_env);

    printf("Diners: %s\n", argv[1]);
    printf("Juice env: %s\n", getenv("JUICE"));
    return 0;

}

The program prints

Diners: (null)
Juice env: (null)`

CodePudding user response:

Try it as it is shown in the text book:

They are 2 programs:

The first program prepares an environment and passes it to a second program that it also executes.

// my_exec_program.c
#include <unistd.h>

int main(void)
{
    char *my_env[] = {"JUICE=peaches and apples", NULL};
    execle("diner_info", "diner_info", "4", NULL, my_env);
}

The second program reads its environment and prints it.

// diner_info.c
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  if (argc > 1)
  {
    printf("Diners: %s\n", argv[1]);
  }
  printf("Juice env: %s\n", getenv("JUICE"));
  return 0;
}

Terminal:

gerhardh@xy:~/tests$ gcc -Wall -Wextra -pedantic my_exec_program.c -o my_exec_program
gerhardh@xy:~/tests$ gcc -Wall -Wextra -pedantic diner_info.c  -o diner_info
gerhardh@xy:~/tests$ ./diner_info 
Juice env: (null)
gerhardh@xy:~/tests$ ./my_exec_program 
Diners: 4
Juice env: peaches and apples
gerhardh@xy:~/tests$ 

Mixing the code and squeezing everything into one file will not work.

  • Related