C++系统相关操作2 - 获取系统环境变量
- 1. 关键词
- 2. sysutil.h
- 3. sysutil.cpp
- 4. 测试代码
- 5. 运行结果
- 6. 源码地址
1. 关键词
C++ 系统调用 环境变量 getenv 跨平台
2. sysutil.h
#pragma once#include <cstdint>
#include <string>namespace cutl
{/*** @brief Get an environment variable.** @param name the name of the environment variable.* @param default_value the default value if the variable is not found.* @return std::string the value of the environment variable.*/std::string getenv(const std::string &name, const std::string &default_value);
} // namespace cutl
3. sysutil.cpp
#include <map>
#include <iostream>
#include <strutil.h>
#include <cstdlib>
#include "sysutil.h"
#include "inner/logger.h"
#include "inner/system_util.h"
#include "inner/filesystem.h"namespace cutl
{std::string getenv(const std::string &name, const std::string &default_value){const char *text = std::getenv(name.c_str());if (text == nullptr){CUTL_ERROR("variable [" + name + "] not set, fallback to " + default_value);return default_value;}return std::string(text);}
} // namespace cutl
4. 测试代码
#include "common.hpp"
#include "sysutil.h"void TestGetEnv()
{PrintSubTitle("TestGetEnv");auto result = cutl::getenv("PATH", "not found");std::cout << "getenv for PATH, result:" << std::endl<< result << std::endl;// for Windows testingstd::cout << "USERPROFILE: " << cutl::getenv("USERPROFILE", "not found") << std::endl;std::cout << "PROCESSOR_ARCHITECTURE: " << cutl::getenv("PROCESSOR_ARCHITECTURE", "not found") << std::endl;// FOR UNIX/LINUX/MAC testingstd::cout << "HOME: " << cutl::getenv("HOME", "not found") << std::endl;
}
5. 运行结果
---------------------------------------------TestGetEnv---------------------------------------------
getenv for PATH, result:
/usr/local/bin:/usr/local/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/go/bin
USERPROFILE: [2024-06-21 21:32:28.863][E]]0x7ff85b8d5fc0](cutl) [sysutil.cpp:208:getenv] variable [USERPROFILE] not set, fallback to not found
not found
PROCESSOR_ARCHITECTURE: [2024-06-21 21:32:28.863][E]]0x7ff85b8d5fc0](cutl) [sysutil.cpp:208:getenv] variable [PROCESSOR_ARCHITECTURE] not set, fallback to not found
not found
HOME: /Users/spencer
6. 源码地址
更多详细代码,请查看本人写的C++ 通用工具库: common_util, 本项目已开源,代码简洁,且有详细的文档和Demo。
本文由博客一文多发平台 OpenWrite 发布!
相关文章:

C++系统相关操作2 - 获取系统环境变量
1. 关键词2. sysutil.h3. sysutil.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 C 系统调用 环境变量 getenv 跨平台 2. sysutil.h #pragma once#include <cstdint> #include <string>namespace cutl {/*** brief Get an environment variable.** param na…...

适合小白学习的项目1906java Web智慧食堂管理系统idea开发mysql数据库web结构java编程计算机网页源码servlet项目
一、源码特点 java Web智慧食堂管理系统是一套完善的信息管理系统,结合java 开发技术和bootstrap完成本系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术 bootstra…...

AI通用大模型不及垂直大模型?各有各的好
AI时代,通用大模型和垂直大模型,两者孰优孰劣,一直众说纷纭。 通用大模型,聚焦基础层,如ChatGPT、百度文心一言,科大讯飞星火大模型等,都归属通用大模型,它们可以解答…...

农产品价格信息系统小程序
一键掌握市场脉动 🌾 引言:为何关注农产品价格? 在当今社会,农产品价格的波动直接关系到农民的收入和消费者的生活成本。因此,及时、准确地掌握农产品价格信息,对于农民合理安排生产、消费者做出购买决策都…...

【LLM-多模态】高效多模态大型语言模型综述
一、结论写在前面 模型规模的庞大及训练和推理成本的高昂,限制了MLLMs在学术界和工业界的广泛应用。因此,研究高效轻量级的MLLMs具有巨大潜力,特别是在边缘计算场景中。 论文深入探讨了高效MLLM文献的领域,提供了一个全面的视角…...

ASP .Net Core创建一个httppost请求并添加证书
ASP .Net Core创建一个httppost请求并添加证书 创建.net Core程序,使用自签名证书,可以处理https的get和post请求。 创建证书 创建自签名证书的流程可以在这里查看: https://blog.csdn.net/GoodCooking/article/details/139815278创建完毕…...

Redis入门篇
目录 传送门一、前言二、NoSQL1、ont only sql,特点:2、NoSQL的四大分类: 三、Redis概念四、五大数据类型: 传送门 SpringMVC的源码解析(精品) Spring6的源码解析(精品) SpringBoot3框架&#…...

变电站智能巡检机器人解决方案
我国拥有庞大的电网体系,变电站数量众多,且近年来快速增长。然而目前我国变电站巡检方式仍以人工为主,存在效率低下、监控不全面等问题。变电站通常是一个封闭的系统空间,设备种类繁多、占地面积广阔,这对巡检人员实时…...

Linux Kernel入门到精通系列讲解(QEMU-虚拟化篇) 2.5 Qemu实现RTC设备
1. 概述 上一章节起(5.4小节),我们已经把整个Naruto Pi都跑通了,从BL0到kernel再到Rootfs都通了,目前可以说已经具备学习Linux得基础条件,剩下得都只是添砖加瓦,本小节我们将添加RTC,如果你还没有添加RTC,你可以试试不添加RTC时,Linux的时间戳会很奇怪,加了RTC后,…...

【自动驾驶】通过下位机发送的加速度、角速度计算机器人在世界坐标系中的姿态
文章目录 原始代码全局变量定义逆平方根函数四元数解算函数理论解释四元数加速度计数据归一化计算方向余弦矩阵的第三行计算误差计算并应用积分反馈应用比例反馈积分陀螺仪数据,更新四元数归一化四元数更新姿态数据整体流程原始代码 #define SAMPLING_FREQ 20.0f // 采样频率…...

Python 设计模式(第2版) -- 第四部分(其他设计模式)
Python 设计模式(第2版) 最后介绍下其他设计模式。 模型—视图—控制器(MVC)-- 复合模式 根据 GoF 的定义,“复合模式将两个或更多模式组合成解决常见或普遍性问题的解决方案”。复合模式不是同时使用的一组模式,而是一个问题的…...

gitlab升级16.11.3-ee
背景 这是事后一段时间补充记录的博客。 升级目的:修补漏洞CVE-2024-4835 未经认证的威胁攻击者能够利用该漏洞在跨站脚本 (XSS) 攻击中,轻松接管受害者账户。 gitlab版本为14.6.2-ee升级至16.11.3-ee 思路 翻阅文档找升级方法及升级版本路径。使用…...

剑指offer 算法题(搜索二维矩阵)
剑指offer 第二题 去力扣里测试算法 思路一: 直接暴力遍历二维数组。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for (unsigned int i{ 0 }; i < matrix.size(); i){for (unsigned int j{ 0 };…...

SaaS平台数据对接为什么要选择API对接?
SaaS平台数据对接是指将一个或多个SaaS平台中的数据集成到其他应用或平台中的过程。在当前的数字化时代,企业越来越倾向于使用SaaS平台来管理他们的业务和数据。然而,这些数据通常散布在不同的SaaS平台中,这对于企业数据的整合和分析来说可能…...

力扣136. 只出现一次的数字
Problem: 136. 只出现一次的数字 文章目录 题目描述思路复杂度Code 题目描述 思路 由于题目要求使用线性时间复杂度和常量级的空间复杂度,再加上找重复元素这个特性,我们可以想到使用位运算来求解: 1.任何数与其本身异或得0,任何…...

重学java 74.Lombok的使用
少点心气,多点干劲 —— 24.6.18 一、lombok的安装使用 1.作用: 简化javabean开发 2.使用: a.下插件 ->如果是idea2022不用下载了,自带 b.导lombok的jar包 安装教程: http://t.csdnimg.cn/wq9MM c.修改设置 二、lombok的介绍 Lombok通过增加一…...

数据结构6---树
一、定义 树(Tree)是n(n>0)个结点的有限集。当n0时成为空树,在任意一棵非空树中: 1、有且仅有一个特定的称为根(Root)的结点; 2、当n>1时,其余结点可分为m(m>日)个互不相交的有限集T1、T2、...、 Tm,其中每一个集合本身又是一棵树,并且称为根的…...

一键制作,打造高质量的数字刊物
随着数字化时代的到来,数字刊物已经成为信息传播的重要载体。它以便捷、环保、互动性强等特点,受到了越来越多人的青睐。然而,如何快速、高效地制作出高质量的数字刊物,成为许多创作者面临的难题。今天,教大家一个制作…...

Java面试题:对比继承Thread类和实现Runnable接口两种创建线程的方法,以及它们的优缺点
Java 中创建线程有两种主要的方法:继承 Thread 类和实现 Runnable 接口。下面我将分别介绍这两种方法,并对比它们的优缺点。 继承 Thread 类 方法: 创建一个继承自 Thread 的子类。重写 Thread 类的 run 方法。创建子类的实例并调用 start…...

编译原理-各章典型题型+思路求解
第2章文法和语言习题 基础知识: 思路: 基础知识: 思路: 基础知识: 编译原理之 短语&直接短语&句柄 定义与区分_编译原理短语,直接短语,句柄-CSDN博客 思路: 题目: 基础解释:…...

【绝对有用】C++ vector排序
在 C 中,有多种方法可以对向量(即 std::vector)进行排序。最常用的方法是使用标准库中的 std::sort 函数。以下是一些例子: 使用 std::sort 函数 std::sort 函数是标准库 <algorithm> 中的一个函数,可以对向量…...

linux——VScode安装
方法一:使用snap一键安装 Snap Store 是 Ubuntu、Debian、Fedora 和其他几个 Linux 发行版中的一个应用商店,提供了数千个应用程序和工具的安装。Snap Store 使用 Snap 包格式,这是一种通用的 Linux 软件包格式,使得在不同的 Lin…...

X-LoRA:高效微调 LoRA 系列,实现不同领域知识专家混合模型
📜 文献卡 X-LoRA: Mixture of Low-Rank Adapter Experts, a Flexible Framework for Large Language Models with Applications in Protein Mechanics and Molecular Design作者: Eric L. Buehler; Markus J. BuehlerDOI: 10.48550/arXiv.2402.07148摘要:We report…...

基于卷积神经网络的目标检测
卷积神经网络基础知识 1.什么是filter 通常一个6x6的灰度图像,构造一个3*3的矩阵,在卷积神经网络中称之为filter,对6x6的图像进行卷积运算。 2.什么是padding 假设输出图像大小为nn与过滤器大小为ff,输出图像大小则为(n−f1)∗(…...

Mysqld数据库管理
一.Mysqld数据库类型 常用的数据类型 int 整型 无符号[0-4294967296(2的32次方)-1],有符号[-2147483648(2的31次方)-2147483647]float单精度浮点 4字节32位double双精度浮点 8字节64位char固定长度的字符类型…...

Wifi通信协议:WEP,WPA,WPA2,WPA3,WPS
前言 无线安全性是保护互联网安全的重要因素。连接到安全性低的无线网络可能会带来安全风险,包括数据泄露、账号被盗以及恶意软件的安装。因此,利用合适的Wi-Fi安全措施是非常重要的,了解WEP、WPA、WPA2和WPA3等各种无线加密标准的区别也是至…...

开源【汇总】
开源【汇总】 前言版权推荐开源【汇总】最后 前言 先占个位 2024-6-21 21:29:33 以下内容源自《【创作模板】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://jsss-1.blog.csdn.net 禁止其他平台发…...

英文字母表
目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 英文字母表 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){foreach (var item in panel1.Controls){if (item ! null)…...

Redis缓存穿透
缓存穿透: 查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。 方法一: 方法二: 布隆过滤器: 简单来说就是一个二进制数组,用0和1来判断数组中是否存在…...

SHELL脚本学习(十一)正则表达式
一、锚点字符 1.1 锚点行首 脱字符(^)指出行首位置 $ cat < file1 test line1 test line2 test line3 line4 test#打印所有包括文本 test的行 $ sed -n /test/p file1 test line1 test line2 test line3 line4 test#打印所有以test为首的行 $ sed -n /^test/p file1 test…...