首页 > 后端开发 > C++ > 我们可以始终相信 argv[0] 提供可执行文件的名称吗?

我们可以始终相信 argv[0] 提供可执行文件的名称吗?

Susan Sarandon
发布: 2024-12-14 11:56:10
原创
839 人浏览过

Can We Always Trust argv[0] to Provide the Executable's Name?

argv[0] 之谜:保证程序名称的问题

在 C 或 C 中利用 main() 的功能时,出现了一个长期存在的问题:我们是否可以依靠 argv[0] 来揭示可执行文件的名称,或者它仅仅是一个缺乏通用性的约定适用性?

为了解开这个谜题,让我们深入研究标准化的历史。

标准法令

согласно ISO C11,位于 argv[0] 的字符串,如果 argc 超过零,代表程序 姓名。然而,这种表述并不是绝对的。当程序名称在主机环境深处仍然难以捉摸时,argv[0][0] 会恢复为空字符。

不幸的是,标准强调了 argv[0]“代表”程序名称,留下不同表示的可能性。这种不确定性掩盖了其真实性。

为了进一步掩盖这个问题,该标准断言 argv[0] 到 argv[argc-1] 中的值会受到主机环境的突发奇想的影响,并且超出了标准的掌握范围。

宿主环境 Houdinis

这种神秘的立场赋予主机环境有权自行决定操纵 argv[0]。程序名称可能会消失,被空字符串取代,或者变成一个令人困惑的密码,这会让密码破译者不知所措。

不受约束的实现

尽管表面上存在无政府状态,ISO 标准确实强加了一个对这种混乱的秩序的衡量。实现定义,作为标准术语,要求实现提供文档来阐明它们对 argv[0] 的处理。即使在 UNIX 的狂野领域,exec 系列对 argv[0] 造成严重破坏,标准也强制记录此类偏差。

结论

虽然 argv[0] 经常用作照明灯塔,揭示可执行文件的路径,其准确性和一致性仍然掌握在主机环境手中。为了确保argv[0]的准确性,查阅主机环境的文档成为不可或缺的工具。然而,argv[0] 作为最终程序名称的普遍有效性仍然是一个难以实现的梦想。

以上是我们可以始终相信 argv[0] 提供可执行文件的名称吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板