当前位置: 首页 > news >正文

MACOS/LINUX/WINDOWS C++ 获取当前可执行程序的完整路径

依赖本人写的多平台编译器宏判断:

C/C++ MACOS、Windows、Linux、HarmonyOS 平台宏判断-CSDN博客

MACOS头文件依赖:

#if defined(_MACOS)
#include <libproc.h>
#endif

#include <mach-o/dyld.h>

只需要链接 libSystem.dylib 就行了,不需要在编译器上面声明链接它,编译器会隐式自动链接。

源代码:

    std::string GetFullExecutionFilePath() noexcept {
#if defined(_WIN32)char exe[8096]; /* MAX_PATH */GetModuleFileNameA(NULL, exe, sizeof(exe));return exe;
#elif defined(_MACOS)char path[PATH_MAX];uint32_t size = sizeof(path);if (_NSGetExecutablePath(path, &size) == 0) {return path;}#if defined(PROC_PIDPATHINFO_MAXSIZE)char pathbuf[PROC_PIDPATHINFO_MAXSIZE];proc_pidpath(getpid(), pathbuf, sizeof(pathbuf));return pathbuf;
#elsereturn "";
#endif
#elsechar sz[PATH_MAX + 1];int dw = readlink("/proc/self/exe", sz, PATH_MAX);sz[dw] = '\x0';return dw < 1 ? "" : sz;
#endif}

相关文章:

MACOS/LINUX/WINDOWS C++ 获取当前可执行程序的完整路径

依赖本人写的多平台编译器宏判断&#xff1a; C/C MACOS、Windows、Linux、HarmonyOS 平台宏判断-CSDN博客 MACOS头文件依赖&#xff1a; #if defined(_MACOS) #include <libproc.h> #endif #include <mach-o/dyld.h> 只需要链接 libSystem.dylib 就行了&#…...

【Nginx笔记02】通过Nginx服务器转发客户端的WebSocket接口到后端服务

这篇文章&#xff0c;主要介绍如何通过Nginx服务器转发客户端的WebSocket接口到后端服务【知识星球】。 目录 一、Nginx配置WebSocket 1.1、Nginx配置内容 1.2、客户端请求地址 1.3、创建WebSocket测试工程 1.4、启动测试 1.5、WebSocket超时问题 1.5.1、设置超时时间 …...

关于高德地图及其APP获取地图数据的研究

刚过完春节没几天&#xff0c;有个客户提出要获取高德地图的数据。 我看了下&#xff0c;回复说&#xff1a;这不是很简单嘛&#xff0c;高德有公开的开放平台&#xff0c;有足够的API支持用户获取数据&#xff0c;开发自己基于高德数据库的应用。 客户回复说&#xff1a;他的要…...

【Python入门教程】Python实现鸡兔同笼

今天跟大家分享一下很久之前自己做的鸡兔同笼求解问题的小游戏&#xff0c;使用公式和基本的判断语句即可实现&#xff0c;可以用来当练手或者消磨时间用。 大家在编代码的时候最重要就是先理清逻辑思路&#xff0c;例如应该套几层循环、分几个模块等等。然后在编码时可以先随意…...

微信小程序,h5端自适应登陆方式

微信小程序端只显示登陆(获取opid),h5端显示通过账户密码登陆 例如: 通过下面的变量控制: const isWeixin ref(false); // #ifdef MP-WEIXIN isWeixin.value true; // #endif...

物体检测-系列教程20:YOLOV5 源码解析10 (Model类前向传播、forward_once函数、_initialize_biases函数)

&#x1f60e;&#x1f60e;&#x1f60e;物体检测-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 14、Model类 14.2 前向传播 def forward(self, x, augmentFalse, profileFalse):if augm…...

贪吃蛇(C语言)步骤讲解

一&#xff1a;文章大概 使用C语言在windows环境的控制台中模拟实现经典小游戏 实现基本功能&#xff1a; 1.贪吃蛇地图绘制 2.蛇吃食物的功能&#xff08;上&#xff0c;下&#xff0c;左&#xff0c;右方向控制蛇的动作&#xff09; 3.蛇撞墙死亡 4.计算得分 5.蛇身加…...

MySQL 数据库表设计和优化

一、数据结构设计 正确的数据结构设计对数据库的性能是非常重要的。 在设计数据表时&#xff0c;尽量遵循一下几点&#xff1a; 将数据分解为合适的表&#xff0c;每个表都应该有清晰定义的目的&#xff0c;避免将过多的数据存储在单个表中。使用适当的数据类型来存储数据&…...

JavaScript进阶-高阶技巧

文章目录 高阶技巧深浅拷贝浅拷贝深拷贝 异常处理throw抛异常try/caych捕获异常debugger 处理thisthis指向改变this 性能优化防抖节流 高阶技巧 深浅拷贝 只针对引用类型 浅拷贝 拷贝对象后&#xff0c;里面的属性值是简单数据类型直接拷贝值&#xff0c;如果属性值是引用数…...

C语言中“#“和“##“的用法

1. 前言 # &#xff1a;把宏参数变为一个字符串, ##&#xff1a;把两个宏参数贴合在一起. 2. 一般用法 #include<stdio.h> #define toString(str) #str //转字符串 #define conStr(a,b) (a##b)//连接 int main() { printf(toString(12345)): //输出字符串&q…...

Linux命令-clock命令(用于调整 RTC 时间)

说明 clock命令用于调整 RTC 时间。 RTC 是电脑内建的硬件时间&#xff0c;执行这项指令可以显示现在时刻&#xff0c;调整硬件时钟的时间&#xff0c;将系统时间设成与硬件时钟之时间一致&#xff0c;或是把系统时间回存到硬件时钟。 语法 clock [--adjust][--debug][--dir…...

编程笔记 Golang基础 045 math包

编程笔记 Golang基础 045 math包 一、math包主要功能常量&#xff1a;函数&#xff1a;数值运算&#xff1a;三角函数&#xff1a;对数函数&#xff1a;随机数相关&#xff1a; 二、示例代码一三、示例代码二小结 Go 语言的标准库 math 提供了一系列基础数学函数和常量&#xf…...

[Java 探索者之路] 一个大厂都在用的分布式任务调度平台

分布式任务调度平台是一种能够在分布式计算环境中调度和管理任务的系统&#xff0c;在此环境下&#xff0c;各个任务可以在独立的节点上运行。它有助于提升资源利用率&#xff0c;增强系统扩展性以及提高系统对错误的容忍度。 文章目录 1. 分布式任务调度平台1. 基本概念1.1 任…...

基于JAVA springboot+mybatis智慧生活分享平台设计和实现

基于JAVA springbootmybatis智慧生活分享平台设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…...

详细了解C++中的namespace命名空间

键盘敲烂&#xff0c;月薪过万&#xff0c;同学们&#xff0c;加油呀&#xff01; 目录 键盘敲烂&#xff0c;月薪过万&#xff0c;同学们&#xff0c;加油呀&#xff01; 一、命名空间的理解 二、&#xff1a;&#xff1a;作用域运算符 三、命名空间&#xff08;namespace&…...

#WEB前端(HTML属性)

1.实验&#xff1a;a,img 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; a: href插入超链接 默认情况下在本窗口打开链接, target可以设置打开的窗口,parent在父窗口打开&#xff0c;blank新开串口打开,top在顶层串口打开,self为默认在本窗口打开 img: 插入图片 可以插…...

LeetCode---【和的操作】

目录 两数之和我的答案在b站up那里学到的【然后自己复写】 和为 K 的子数组在b站up那里学到的【然后自己复写】 三数之和在b站up那里学到的【然后自己复写】 两数相加【链表】我的半路答案&#xff1a;没有看到是链表在b站up那里学到的【复写失败后整理】 两数之和 我的答案 …...

Docker容器与虚拟化技术:OpenEuler 使用 docker-compose 部署 LNMP

目录 一、实验 1.环境 2.OpenEuler 部署 docker-compose 3.docker-compose 部署 LNMP 二、问题 1.ntpdate未找到命令 2.timedatectl 如何设置时区与时间同步 3.php网页显示时区不对 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统架构版本IP备注Lin…...

13-微服务初探-自研微服务框架

微服务初探 1. 架构变迁之路 1.1 单体架构 互联网早期&#xff0c;一般的网站应用流量较小&#xff0c;只需要一个应用&#xff0c;将所有的功能代码都部署在一起就可以&#xff0c;这样可以减少开发&#xff0c;部署和维护的成本。 比如说一个电商系统&#xff0c;里面包含…...

LeetCode——二叉树(Java)

二叉树 简介[简单] 144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历二叉树层序遍历[中等] 102. 二叉树的层序遍历[中等] 107. 二叉树的层序遍历 II[中等] 199. 二叉树的右视图[简单] 637. 二叉树的层平均值[中等] 429. N 叉树的层序遍历[中等] 515. 在每个…...

无片外电容LDO电路设计方案:‘完整IP现成电路,含过温过流保护与性能指标流片验证’及学习资源包

无片外电容LDO电路设计 完整IP现成电路&#xff0c;具有过温保护和过流保护&#xff0c;带隙&#xff0c;BUFFER都有 性能指标已流片验证 同时有相关文献、各模块电路功能分析简化计算笔记&#xff0c;适合学习入门不适合纵向可以附赠一些自己学习时觉得比较有帮助的资料。 有好…...

解决重装系统后 BitLocker 分区每次重启需手动解锁的问题

解决重装系统后 BitLocker 分区每次重启需手动解锁的问题 问题现象原因分析找回 48 位 BitLocker 恢复密钥永久解决&#xff1a;启用自动解锁&#xff08;避免每次重启输入&#xff09; 电脑版本win11&#xff0c;更新后遇到设置和驱动消失的问题&#xff0c;不得不重装系统。重…...

告别重复登录!用Playwright连接你已登录的Chrome,5分钟搞定自动化数据采集

5分钟实现浏览器自动化&#xff1a;Playwright接管已登录Chrome实战指南 每次运行自动化脚本都要重新登录网站&#xff1f;面对短信验证码和复杂风控系统时束手无策&#xff1f;或许你需要的不是更强大的爬虫&#xff0c;而是换个思路——直接接管你已经登录好的Chrome浏览器。…...

Cocos Creator平台适配层框架设计

在 Cocos Creator 多平台开发中&#xff0c;平台抽象层不仅是架构设计问题&#xff0c;更是工程落地能力的体现。如果仅停留在概念层面&#xff0c;很容易流于形式。因此&#xff0c;本文在系统总结的基础上&#xff0c;结合实际代码示例&#xff0c;说明如何构建一个可落地的多…...

USB-Disk-Ejector:重新定义Windows设备安全移除体验

USB-Disk-Ejector&#xff1a;重新定义Windows设备安全移除体验 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It is a quick, flexible, portable alternati…...

别把 Contract C1 当成一个小开关,它决定了你的 ABAP 接口能不能活过下一轮升级

项目里最容易把人拖进泥潭的,往往不是一段代码写不出来,而是一个原本跑得好好的扩展,在系统升级之后突然开始失稳。昨天还能用的自定义逻辑,今天因为标准对象的参数变了、字段被改了、关联目标被挪了,整个流程从查询层一直碎到服务层。到了 ABAP Cloud 和 Clean Core 这条…...

视频修复终极指南:如何用Untrunc恢复损坏的MP4/MOV文件

视频修复终极指南&#xff1a;如何用Untrunc恢复损坏的MP4/MOV文件 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾经遇到过珍贵的视频文件突然无法播放的困…...

手把手教你用USB转TTL给STM32小蓝板烧录Arduino程序(无需BootLoader)

手把手教你用USB转TTL给STM32小蓝板烧录Arduino程序&#xff08;无需BootLoader&#xff09; 1. 准备工作&#xff1a;硬件与软件环境搭建 当你拿到一块STM32 Blue Pill开发板&#xff08;小蓝板&#xff09;时&#xff0c;最迫切的需求可能就是让它跑起来。传统方法需要复杂的…...

如何构建个人数字图书馆:知识星球内容永久保存完整方案

如何构建个人数字图书馆&#xff1a;知识星球内容永久保存完整方案 【免费下载链接】zsxq-spider 爬取知识星球内容&#xff0c;并制作 PDF 电子书。 项目地址: https://gitcode.com/gh_mirrors/zs/zsxq-spider 你是否曾经为知识星球上的优质内容无法永久保存而焦虑&…...

RabbitMQ消费者处理失败

1. 原生 RabbitMQ 机制&#xff1a;依赖 Ack 和“丢回去”&#xff08;Requeue&#xff09; RabbitMQ 服务端本身没有内置“最多重试 N 次然后丢弃”这种复杂的本地计数机制。它主要依赖**消息确认机制&#xff08;ACK&#xff09;**来保证消息不丢失。 当消费者处理失败时&…...