San*_*raj 59 c environment-variables command-line-arguments
为了在C程序中获取环境变量,可以使用以下内容:
getenv() extern char **environ;但除了上面提到的,使用char *envp[]第三个参数main()来获取环境变量被认为是标准的一部分?
#include <stdio.h>
int main(int argc, char *argv[], char *envp[])
{
while(*envp)
printf("%s\n",*envp++);
}
Run Code Online (Sandbox Code Playgroud)
是char *envp[]便携式?
cni*_*tar 49
该功能getenv是C标准指定的唯一功能.该函数putenv和extern environ是特定于POSIX的.
该main参数envp未由POSIX指定,但受到广泛支持.
访问环境列表的另一种方法是声明main()函数的第三个参数:
Run Code Online (Sandbox Code Playgroud)int main(int argc, char *argv[], char *envp[])然后可以像environ一样处理这个参数,区别在于它的范围是main()的本地.尽管此功能在UNIX系统上广泛实现,但应避免使用它,因为除了范围限制之外,它在SUSv3中未指定.
sky*_*yel 17
它不便携.*envp[]是一种传统的UNIX,并非所有现代UNIX系统都实现它.
另外作为旁注,您可以通过执行指针遍历来访问envp *argv[],溢出它...但我不认为这可以被认为是安全的编程.如果你看一下过程存储器映射,你会看到envp[]它就在上面argv[].