C 从主机linux系统读取应用程序范围中的环境变量

C 从主机linux系统读取应用程序范围中的环境变量,c,linux,C,Linux,早上好, 我有一个在基于linux的嵌入式设备上运行的C语言应用程序。 业务逻辑设置TZenv。变量,请参见以下说明: setenv ("TZ", time_zone_string, 1); tzset (); 假设时区\u字符串与POSIX规则匹配。 我的应用程序的时区与主机系统设备的时区不同 从主机设备,我可以访问TZenv。应用变量?无需在应用程序代码中放置一些printf()、system()等,如果您可以将进程(或其核心转储)附加到调试器,则可以从环境数组中搜索所需的环境变量 gdb

早上好, 我有一个在基于linux的嵌入式设备上运行的C语言应用程序。 业务逻辑设置
TZ
env。变量,请参见以下说明:

setenv ("TZ", time_zone_string, 1);
tzset ();
假设
时区\u字符串
与POSIX规则匹配。 我的应用程序的时区与主机系统设备的时区不同


从主机设备,我可以访问
TZ
env。应用变量?无需在应用程序代码中放置一些
printf()
system()
等,如果您可以将进程(或其核心转储)附加到调试器,则可以从
环境
数组中搜索所需的环境变量

gdb示例:

(gdb) print *(environ+10)
$27 = 0xbeb52fb1 "PWD=/"
(gdb) print *(environ+11)
$28 = 0xbeb52fb7 "SSH_CONNECTION=192.168.194.19 55358 192.168.194.21 22"
(gdb) print *(environ+12)
$29 = 0x11850 "ABC=123"
(gdb) 
可能有更简单的方法来找到正确的值。但是如果您只有很少的环境变量,那么您很快就会找到正确的环境变量


更多信息:

阅读
/proc/$pid/environ
@ZangMingJie注意,它只表示进程环境的初始状态-它不会反映进程启动后自身所做的任何更改。看,我不明白,你不仅仅需要getenv吗?@Joe我想在应用程序外部而不是内部读取env。最简单的方法(因为它是你的应用程序)是显式地使其可用(例如,通过编写文件,或者通过提供可从中读取它的管道或套接字)。