I have come to understand that char **envp
is the third argument to main
, and with the help of the code below, I was able to see what it actually contains.
int main(int argc, char *argv[], char *env[])
{
int i;
for (i=0 ; env[i] ; i++)
std::cout << env[i] << std::endl;
std::cout << std::endl;
}
My question is: why (in what situations) would programmers need to use this? I have found many explanations for what this argument does, but nothing that would tell me where this is typically used. Trying to understand what kind of real world situations this might be used in.
It is an array containing all the environmental variables. It can be used for example to get the user name or home directory of current logged in user. One situation is, for example, if I want to hold a configuration file in user's home directory and I need to get the PATH;
int main(int argc, char* argv[], char* env[]){
std::cout << env[11] << '\n'; //this prints home directory of current user(11th for me was the home directory)
return 0;
}
Equivalent of env
is char* getenv (const char* name) function which is easier to use, for example:
std::cout << getenv("USER");
prints user name of current user.