进程环境---getenv、putenv和setenv函数详解

 在Linux中的c程序的典型内存分布中,之前提到的有 text段、data段、bss段、堆和栈这几部分,在笔记“麦子学院c语言->典型c语言程序的c内存分布”中介绍了。但是其实一个c语言进程的内存分布中不止是有这些区域,还有命令行参数、环境变量以及共享库和mmap映射区等区域。如下图所示
------------------------------
环境变量区域
命令行参数
共享库和mmap映射区
bss段
data段
text段
-------------------------------
=====================================================
通常环境变量是通过 name=value 的形式给出的,使用 environ 指针打印出的所有的环境变量的形式就是如此。使用 getenv 函数可以通过给出 name 来获得 value 的值。
函数原型:
函数参数:
  • name:想要获取的环境变量名
返回值:
  • 调用成功返回指向 value 的指针
  • 调用失败返回 NULL
=====================================================
putenv 函数用来向环境表中 添加或者修改 环境变量。
函数原型:
函数参数:
  • string:指向环境变量的指针,其中环境变量必须以 "name=value" 的形式给出
返回值:
  • 调用成功返回 0
  • 调用失败时返回 非0 值
如果环境表中没有 name 这个环境变量,则添加该环境变量;如果环境表中已经有了name这个环境变量,则先删除之前的 value,再修改为新的 value。
=====================================================
setenv 函数和putenv 函数功能类似,可以用来 添加或修改 环境变量。
函数原型:
函数参数:
  • name:环境变量名
  • value:环境变量值
  • overwrite:重写选项,当 name 在环境表中存在时,如果 overwrite 的值为 0 ,则不修改name的值;如果 overwrite 的值为 非0,则修改name的值。
返回值:
  • 调用成功返回 0
  • 调用失败时返回 非0
=====================================================
putenv 函数和 setenv 函数虽然功能类似,但是这两个函数在实现方面还是有区别的,区别如下:
putenv函数:
  • putenv 函数会将参数 string 直接填写到环境表中,不会再为 "name=value" 这个字符串再去分配内存。如果是在一个函数中定义的string,那么在调用该函数后,string 指向的内容可能会被释放,就找不到name环境变量的值了。
setenv 函数:
  • setenv 函数和 putenv 函数不同,它会将name和value指向的内容复制一份并为其分配内存,形成 "name=value" 的字符串,并将其地址写入到环境表中。所以就不会出现上面putenv 的情况,就算函数返回了,name 和 value指向的内容被释放了,仍然有一份拷贝在。
  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ChatGPT 是一个基于 OpenAI GPT 模型的对话生成系统。要搭建 ChatGPT 环境,您可以按照以下步骤进行操作: 1. 安装 Python:确保您的系统上已经安装了 Python。ChatGPT 可以在 Python 3.6 及以上版本中运行。 2. 安装依赖库:使用 pip 命令安装以下依赖库: ``` pip install openai pip install transformers ``` 3. 获取 OpenAI API 密钥:访问 OpenAI 网站并创建一个账号。然后,在 OpenAI 控制台中生成一个 API 密钥。 4. 设置 API 密钥:将 API 密钥设置为环境变量,以便在代码中使用。您可以通过以下方式设置环变量: - 在命令行中执行以下命令( `<YOUR_API_KEY>` 替换为您的实际 API 密钥): ``` export OPENAI_API_KEY=<YOUR_API_KEY> ``` - 或者,您可以在代码中直接 API 密钥: ```python import os os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>" ``` 5. 编写代码:使用 Python 编写代码来与 ChatGPT 进行对话。以下是一个简单的示例: ```python import openai # 设置 OpenAI API 密钥 openai.api_key = os.getenv("OPENAI_API_KEY") # 发送对话请求 response = openai.Completion.create( engine="text-davinci-003", prompt="你好,我是ChatGPT。你有什么问题?", max_tokens=50, n=1, stop=None, temperature=0.7 ) # 提取回答 answer = response.choices[0].text.strip() print(answer) ``` 6. 运行代码:保存代码并运行它。您将获得 ChatGPT 生成的回答作为输出。 请注意,使用 OpenAI API 需要付费,您需要确保您的账号有足够的余额或配额来使用该服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值