首页 > 后端开发 > C++ > `argv[0]` 总是 C/C 中的可执行文件名称吗?

`argv[0]` 总是 C/C 中的可执行文件名称吗?

DDD
发布: 2024-12-09 09:27:06
原创
837 人浏览过

Is `argv[0]` Always the Executable Name in C/C  ?

argv[0] 始终是可执行文件名称,还是仅仅是约定?

向 C 中的 main() 函数提供参数时或者 C 应用程序,就会出现问题:argv[0] 是否总是代表可执行文件的名称?或者这只是一个广泛的约定,不能保证普遍适用性?

深入研究标准

为了确定 argv[0} 的真实性质,我们必须查阅相关标准。 ISO C11 明确规定,当 argc 超过零时,“argv[0] 代表程序名称”。然而,它重要地补充说,“如果程序名称在主机环境中不可用,则 argv[0][0] 应为空字符。”

此澄清表明 argv[0] 仅体现程序名称(如果可以从主机环境轻松获得)。此外,该标准强调 argv 中包含的值完全是实现定义的,受主机环境的影响。

程序名称的含义

因此,如果主机环境无法提供程序名称,则程序名称可能为空,或者如果可访问,则程序名称可以采用任意形式。理论上,主机环境甚至可以选择提供一个乱码的程序名称来娱乐!

注意事项

但是,必须注意“实现定义的” “在 ISO 标准中具有独特的含义。实施者有义务详细记录其具体行为。因此,即使像 UNIX 这样因通过 exec 系列命令灵活地用任意内容填充 argv[0] 而臭名昭著的平台,也必须正式记录他们的做法。

以上是`argv[0]` 总是 C/C 中的可执行文件名称吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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