c - 缺少新的环境变量
问题描述
我在我的程序中设置了一个新的环境变量,但我无法从 shell 中找到它:
int main()
{
if(!setenv("TEST","22222",0)) perror("");
sleep(1000);
return 0;
}
我试试
$ a.out &
[3] 605
$ Success
$ cat /proc/605/environ|grep 2222
$ ps e 605|grep 2222
$
有任何想法吗?非常感谢。
解决方案
如man 5 proc
(注意粗体段落)中所述:
/proc/[pid]/environ
execve
该文件包含通过(2)启动当前执行程序时设置的初始环境 。这些条目由空字节 ('\0'
) 分隔,最后可能有一个空字节。因此,要打印出流程 1 的环境,您可以:$ cat /proc/1/environ | tr '\000' '\n'
如果在
execve
(2) 之后,进程修改了它的环境(例如,通过调用诸如putenv
(3) 之类的函数或environ
直接修改 (7) 变量),则此文件将不会反映这些更改。
推荐阅读
- postgresql - Postgres jsonb 数据到 Amazon Quicksight
- java - Liferay 搜索结构化的网络内容匹配附件的术语
- spring - CLOSED - 无法执行目标 org.springframework.boot:spring-boot-maven-plugin:2.1.2.RELEASE:run
- python-3.x - 列出清单的问题
- google-bigquery - 将可空字段恢复为必填
- r - URL书签R闪亮
- c# - 如何获取适用于 iOS 设备的 Azure 通知中心 RegistrationId?
- python - 我无法使用 Pyinstaller 打包我的程序,因为我安装了 enum34,无法卸载,因为使用过的模块需要它。有什么建议么?
- tensorflow - TFRrecordDataset:为什么以及何时使用缓冲区大小?
- php - 如何使 PhpStorm (JetBrains) 在 PHP 中强制区分函数名的大小写