程序是否进行系统调用以获取linux中环境变量的值?

程序是否进行系统调用以获取linux中环境变量的值?,第1张

概述或者它是函数调用?我知道系统调用是对系统中子程序构建的调用,而函数调用是程序内的调用. 读取环境变量时不进行系统调用. 在C API级别,环境变量作为第三个参数传递给main.完整的原型是: int main(int argc, char *argv[], char *envp[]) 如果以这种方式定义main,则甚至不需要函数调用来读取环境. 以下程序打印所有环境变量: #include <st 或者它是函数调用?我知道系统调用是对系统中子程序构建的调用,而函数调用是程序内的调用.解决方法 读取环境变量时不进行系统调用.

在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中环境变量的值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1026129.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存