I try to update environment but does not work .
this is my example code:
#include <iostream>
#include <stdlib.h>
using namespace std;
extern char **environ ;
void printEnvs() {
int size = sizeof(environ) ;
for (int i=0;i<size;i++) {
char* e = environ[i];
cout << "Env: " << e << endl ;
}
}
int main(int argc, char *argv[])
{
cout << "BEFORE UPDATE" << endl ;
printEnvs();
cout << "----------------------------------------------" << endl ;
string k,v ;
int r ;
cout << "Please enter variable key: ";
cin >> k ;
cout << "Please enter variable value: ";
cin >> v ;
cout << k << "=" << v << endl ;
r = setenv(k.data(),v.data(),0);
if (r != 0) {
cout << "[ERROR] failed to set environment" << endl ;
exit(1);
}
cout << "----------------------------------------------" << endl ;
cout << "AFTER UPDATE" << endl ;
printEnvs() ;
return 0;
}
and result ! :
BEFORE UPDATE
Env: SHELL=/bin/bash
Env: LSCOLORS=Gxfxcxdxdxegedabagacad
Env: SESSION_MANAGER=local/skynet-laptop:@/tmp/.ICE-unix/2181,unix/skynet-laptop:/tmp/.ICE-unix/2181
Env: WINDOWID=44040199
Env: COLORTERM=truecolor
----------------------------------------------
Please enter variable key: name
Please enter variable value: julia
name=julia
----------------------------------------------
AFTER UPDATE
Env: SHELL=/bin/bash
Env: LSCOLORS=Gxfxcxdxdxegedabagacad
Env: SESSION_MANAGER=local/skynet-laptop:@/tmp/.ICE-unix/2181,unix/skynet-laptop:/tmp/.ICE-unix/2181
Env: WINDOWID=44040199
Env: COLORTERM=truecolor
I misunderstood man setenv ?
Note: also i used putenv , still not working .