
在C API级别,环境变量作为第三个参数传递给main.完整的原型是:
int main(int argc,char *argv[],char *envp[])
如果以这种方式定义main,则甚至不需要函数调用来读取环境.
以下程序打印所有环境变量:
#include <stdlib.h>#include <stdio.h>int main(int argc,char *envp[]) { while( *envp ) { printf("%s\n",*envp); envp++; } return 0;} 当然,main只是编译器运行时支持库发明的东西.就 *** 作系统而言,界面有些不同.然而,同样的原则仍然存在.在堆栈上执行后,环境将传递给新创建的程序.
这也是getenv返回char *的原因.它不需要分配任何东西.它已经有了字符串.
编辑添加:知道任何特定函数是否导致系统调用(以及哪些)都很简单.您所要做的就是在代码上运行strace. strace陷阱所有(也是唯一的)系统调用.如果您的getenv函数调用对它不可见,则它不是系统调用.
总结以上是内存溢出为你收集整理的程序是否进行系统调用以获取linux中环境变量的值?全部内容,希望文章能够帮你解决程序是否进行系统调用以获取linux中环境变量的值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)