C++标准库的工具包提供了两个API与当前环境交流
std::system
#include <cstdlib> int system( const char* command );
作用:
- 以参数command调用允许环境的命令处理器(例如 /bin/sh 、 cmd.exe 、 command.com )。
参数:
- command
- 标识要运行于命令处理器的命令字符串。
- 若给出空指针,则检查命令处理器的存在性
返回值:
- 实现定义值。
- 若 command 为空指针,则当且仅当命令处理器存在才返回非零值。
API: https://zh.cppreference.com/w/cpp/utility/program/system
示例:
#include <cstdlib>
#include <fstream>
#include <iostream>
int main()
{
std::system("ls -l >test.txt"); // 执行 UNIX 命令 "ls -l >test.txt"
std::cout << std::ifstream("test.txt").rdbuf();
}
std::getenv
char* getenv( const char* env_var );
功能:
- 于宿主环境(操作系统)提供的环境列表搜索匹配 env_var 所指向的 C 字符串,并返回指向与匹配的列表成员关联的 C 字符串的指针。
参数:
- env_var - 标识要查找的环境变量名的空终止字符串
返回值:
- 标识环境变量值的字符串,或若找不到这种字符串则为空指针。
注解:
- POSIX 系统上,环境变量亦可通过于 <unistd.h> 声明为
extern char **environ;
的全局变量 environ ,及通过可选的 main 函数第三参数 envp 访问。
示例:
#include <iostream>
#include <cstdlib>
int main()
{
if(const char* env_p = std::getenv("PATH"))
std::cout << "Your PATH is: " << env_p << '\n';
}