发布时间:2026/8/6 1:54:30
C++编程实现获取当前可执行文件名称 、介绍在C开发中有时需要获取当前可执行文件的名称用来处理一些事务。那么在主流的平台上获取当前可执行文件名称的方法有哪些呢一般来说无论哪个平台下都分为以下几类使用接口使用配置文件或相关属性注册表等使用第三方库下面将分别在Windows和Linux两大主流平台上进行分析说明。二、Windows平台按照上面的三类划分在Windows平台上获取可执行文件名称的方法有1.系统接口1使用GetModuleFileName函数这是在Windows平台上推荐的用法123456789101112131415161718#include windows.h#include iostream#include stringintmain() {charexePath[MAX_PATH];DWORDlen GetModuleFileNameA(NULL, exePath, MAX_PATH);if(len 0) {std::cerr err code: GetLastError() std::endl;return1;}std::string fullPath(exePath);std::cout cur full path: fullPath std::endl;return0;}2使用C提供的_get_pgmptr函数来获取_pgmptr12345678910#include cstdlib#include iostreamintmain() {char* pgmptr nullptr;errno_t err _get_pgmptr(pgmptr);if(pgmptr ! nullptr) {std::cout full path: pgmptr std::endl;}return0;}2.配置文件及相关直接读取main函数中的argv[0],它一般只包括名字而不包括完整路径。这个简单就不举例了。读取环境变量或配置文件这需要程序中做一些特殊的输出或配置普通的可执行文件可能无法应用3.第三方库在Windows平台上有很多的第三方框架或库都提供了类似的机制如boost::dll::program_location()等。例程看后面。三、Linux平台Linux平台亦是如此但是它的实现方式更加丰富1.系统接口使用dladdr12345678910#include iostream#include dlfcn.hintmain() {Dl_info dl;if(dladdr((void*)main, dl) dl.dli_fname) {std::cout path: dl.dli_fname std::endl;}return0;}其它平台一些变种如Solaris中的getexecname()接口等2.配置文件及相关读取/proc/self/exe链接获取当前可执行文件名称12345678910111213#include iostream#include unistd.h#include limits.hintmain() {charexePath[PATH_MAX];ssize_t len readlink(/proc/self/exe, exePath,sizeof(exePath) - 1);if(len ! -1) {exePath[len] \0;std::cout full path: exePath std::endl;}return0;}读取/proc/self/cmdline12345678910111213#include iostream#include fstream#include stringintmain() {std::ifstream cmdline(/proc/self/cmdline);if(cmdline.is_open()) {std::string exePath;std::getline(cmdline, exePath,\0);std::cout full path: exePath std::endl;}return0;}使用main函数中的argv[0]不赘述gunlib中的program_name这个需要主动初始化有点类似Windows平台的特殊配置3.第三库1典型的就是使用Boost库中的boost::dll::program_location()看例子12345678#include iostream#include boost/dll/runtime_symbol_info.hppintmain() {boost::dll::fs::path fullPath boost::dll::program_location();std::cout full path: fullPath.string() std::endl;return0;}2其它一些特定系统上的库如libbsd等四、分析说明除了上面的分析的方法外另外还可以使用一些特殊的技巧来获取执行文件的名称比如使用调试的接口backstarce函数等等。通过上面的分析说明基本上可以看到它们的优缺点。对使用接口操作来说优点是安全稳定及准确但可能无法跨平台。而且可能有的平台上需要安装一些特定的库一般来说使用配置及相关的方法相对来说都比较准确通常包括完整的全路径。但缺点是依赖于特定的平台或系统而且有可能还需要权限。这点就限制了不少的应用特别是在某些裁剪的系统上的应用;使用第三方库的优点是应用上简单灵活多变。缺点是需要安装第三方库而且在编译时需要增加对相关的库的链接。对于一些小的工程就不太实用了。这里必须单独把使用argv[0]拿出来它作为一种很传统的获取可执行文件名称的方法在正式场景下不建议使用。因为影响它的因素比较多有可能名称根本就不对。所以还是要引起注意。五、总结其实在真正的应用中这种小功能的需求层出不穷。真正和用户打过交道的开发者就会明白用户有时候想得非常“野”让开发者有一种应接不暇的感觉。其实换位思考谁都想让软件的应用更方便快捷。一个小功能往往就会让用户感到软件的人性化。

相关新闻

2026/8/6 1:54:30

Anaconda环境创建失败全解析:从网络权限到Conda配置的根治方案

1. 问题现象与核心原因剖析 最近在帮几个刚入行的数据分析师和机器学习新手排查环境问题时,发现“Anaconda3无法创建环境”这个报错出现的频率相当高。表面上看,这只是个简单的命令执行失败,但背后牵扯到的原因五花八门,从网络权限…

2026/8/6 1:49:30

终极系统兼容性修复指南:一键解决所有Windows运行库问题

终极系统兼容性修复指南:一键解决所有Windows运行库问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 当您在Windows系统上运行软件时,…

2026/8/6 4:04:39

i.MX6ULL HAB安全启动实战:从PKI构建到镜像签名与熔丝烧录

1. 项目缘起:为什么imx6ull的Secure Boot让我折腾了这么久最近在给一个基于NXP i.MX6ULL的工控设备做固件升级方案,客户提了一个硬性要求:必须启用Secure Boot,防止产线或现场被刷入未经授权的固件。这个要求合情合理,…

2026/8/6 4:04:39

论文降AI率免费额度只有1000字,先拿哪一段去试才不浪费?

论文降AI率免费额度只有1000字,先拿哪一段去试才不浪费? 免费额度这东西,多数人是随手用掉的。复制开头第一段,或者干脆把致谢丢进去,处理完读一遍觉得"好像也没什么变化",就把这个工具划掉了。 …

2026/8/6 4:04:38

Verilog实现曼彻斯特编码器:从原理到硬件设计的完整指南

1. 项目概述:从协议到硬件的桥梁在数字通信和存储领域,数据如何在物理介质上可靠地传输和同步,是一个基础且关键的问题。曼彻斯特编码,作为一种经典的“自同步”编码方式,因其在每个比特位中间都包含一个电平跳变&…

2026/8/6 3:59:38

DC-DC电源输出电容选型:从ESR、容值到布局的工程实践

1. 项目概述:为什么输出电容是DC-DC的“定海神针”?做电源设计,尤其是DC-DC电路,很多工程师会把大量精力花在电感选型、控制环路补偿上,这当然没错。但在我经手过的几十个项目中,因为输出电容选型不当导致的…

2026/8/5 3:13:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/6 0:04:22

电力系统调度中的源荷不确定性建模与优化实践

1. 电力系统调度中的源荷不确定性挑战现代电力系统正面临前所未有的复杂性,其中源荷不确定性(Source-Load Uncertainty)已成为调度决策中最棘手的难题之一。我在参与某省级电网调度系统升级时,曾遇到风电预测误差导致日内调度计划…

2026/8/6 0:04:22

VGG-T3技术解析:3D重建速度的革命性突破

1. 项目概述:VGG-T3如何重新定义3D重建速度在计算机视觉领域,3D场景重建一直是个计算密集型任务。传统方法重建1000帧图像规模的场景往往需要数小时甚至更长时间,而英伟达最新发布的VGG-T3技术将这个时间压缩到了惊人的54秒。这个突破性进展来…

2026/8/6 0:04:22

深度解析旅游网站建设的意义及其对行业发展的深远影响与核心价值体现

在这个数字化浪潮席卷全球的今天,我们似乎已经忘记了,曾经有一段时间,人们想要去一个陌生的地方,只能靠在书桌前翻阅厚厚的旅游杂志,或者向刚从那里回来的朋友询问那些模糊不清的印象。那时候,“远方”是一个需要精打细算才能抵达的奢侈概念。而现在,只需要一部手机,轻…

2026/8/5 19:21:13

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/5 19:21:13

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/5 19:21:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…