我正在编写一个使用 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/