c - 如何获取 C 程序本身设置的所有环境变量?

标签 c linux bash gcc

我正在编写一个使用 system() 函数设置环境变量的 C 程序。

有没有什么集合可以给我C程序设置的环境变量?我需要在 C 程序中使用集合。

最佳答案

在 Linux 和类似系统中,当您运行一个进程(例如执行 C 程序)时,该进程是创建它的进程(通常是命令行 shell)的子进程或桌面/GUI 管理器)。创建进程是父进程。子进程中设置的任何“环境变量”都不会影响父进程。

子进程可以使用 getenv 检查自己的环境变量。

如果子进程使用 system 或其他例程创建自己的子进程,则在该“孙子”进程中创建的任何环境变量都不会影响其父进程(我们的第一个子进程)。

一个程序为另一个进程提供环境变量的两种常见方式是:

  • 程序可以创建自己的子进程并指定要在子进程中创建的环境变量,就像各种 exec* 例程,例如 execle。<
  • 程序将环境变量的设置写入stdout 或另一个流,协作进程读取这些设置并相应地设置自己的环境变量。这方面的一个例子是在 Bourne 类型的 shell 中使用命令 eval `ssh-agent -s`。此命令告诉 shell 执行命令 ssh-agent -s,然后评估该命令的输出,就好像它是命令一样。

关于c - 如何获取 C 程序本身设置的所有环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21518123/

相关文章:

bash - 根据X划分文件并放入单独的文件夹中

linux - 有没有办法检查我的所有 shell 用户是否更改了密码

C 程序无法编译,不确定原因

c - 取消引用指向结构成员的不完整类型错误的指针

php - 获取目录的最后修改时间

linux - Bash 函数可以在不等待整个输入的情况下多次缩进流水线

python - 锁定程序,使其无法访问外部文件,就像病毒扫描程序一样

bash - Golang OpenGL 错误 PlatformError : X11: The DISPLAY environment variable is missing panic: NotInitialized: The GLFW library is not initialized

c - 如何将int64_t分成两个int32_t通过网络发送?

c++ - 如何从 MPI 中的结构类型创建新的派生数据类型?