首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >argv[0]的使用

argv[0]的使用
EN

Software Engineering用户
提问于 2014-10-30 10:39:47
回答 3查看 207关注 0票数 0

最近,我发现Ubuntu中的latexpdftex (和其他二进制文件)是相同的:

代码语言:javascript
复制
lrwxrwxrwx  1 root root          6 лип 29 18:03 latex -> pdftex*
lrwxrwxrwx  1 root root          6 лип 29 18:03 pdflatex -> pdftex*
lrwxrwxrwx  1 root root          6 лип 17 20:22 pdfcslatex -> pdftex*

在没有任何选项的情况下执行all会产生不同的结果;因此,我假设它们使用argv[0]

使用argv[0]而不是编译多个二进制文件有什么好处?argv[0]还有哪些其他用途?

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2014-10-30 10:45:19

当有大量的共享功能时,它会导致更小的总体可执行文件大小。这是箱箱极端的做法,它拥有数百个大小优化的命令,它们都链接到同一个二进制文件中,并通过argv0进行区分。

据我所知,只有另外两种有用的使用方法:

  • 在显示命令行使用情况的帮助消息中使用它是很方便的,以便帮助引用用户使用的相同命令,即使二进制文件以不同的名称被符号链接或重命名为原名。
  • 一些程序写入它,以提供一种方式显示状态反馈,将显示在ps中。
票数 3
EN

Software Engineering用户

发布于 2014-10-30 10:44:57

基本上是为了节省整体的精力。发送几个微妙不同的二进制文件是在浪费磁盘空间、构建工作(每个版本需要更多的编译)、管理工作(需要维护更多的构建目标和更多的项目)等等。这些二进制文件之间的不同之处是相对简单的条件,最终可能会通过编译器指令自动生成同一源文件;因此,通过正确的if结构(而不是摇摇欲坠的预处理器命令)来动态地使用-语言进行区分就更容易了。

票数 1
EN

Software Engineering用户

发布于 2014-10-30 10:54:35

如果在命令中重用了大量代码,比如解析一个文件并转换成另一种格式,那么这将防止大部分重复的可执行文件。您也可以使用uber命令和参数来完成这一任务。

这确实有一个缺点,即它依赖于可执行文件的调用方式,一个天真的人可能会复制该可执行文件并重命名它,从而阻止它按预期的方式工作。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/261338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档