[Linux 进程] 再谈环境变量,程序地址空间初识
在Linux中,环境变量是一组由环境变量名和对应值组成的字符串,它们定义了shell或者程序运行时的信息,如路径、用户身份等。在程序地址空间中,环境变量通常被用来配置程序运行的环境。
在C语言中,可以通过getenv
函数获取环境变量的值,通过setenv
函数设置或修改环境变量。
#include <stdlib.h>
int main() {
// 获取环境变量HOME的值
char* home = getenv("HOME");
if (home) {
printf("HOME: %s\n", home);
}
// 设置环境变量TEST的值为123
int ret = setenv("TEST", "123", 1);
if (ret == 0) {
printf("TEST set to 123\n");
}
return 0;
}
在程序地址空间中,除了环境变量,还有代码段、数据段、堆、栈等区域。
代码段:存放程序的可执行代码。
数据段:存放程序的全局变量、常量数据等。
堆:动态分配内存,如使用malloc函数申请的内存。
栈:存放局部变量、函数调用信息等,函数调用结束后,其栈空间可被再利用。
int globalVar = 100; // 全局变量,位于数据段
void stackFunc() {
int stackVar = 200; // 局部变量,位于栈
}
void heapFunc() {
int* heapVar = malloc(sizeof(int)); // 动态分配内存,位于堆
}
int main() {
int codeVar = 300; // 局部变量,位于栈
stackFunc();
heapFunc();
return 0;
}
以上代码演示了局部变量、全局变量、动态内存分配和代码段在程序地址空间中的位置。
评论已关闭