【发布时间】:2013-10-10 15:14:59
【问题描述】:
假设我有一个我编写的应用程序,它依赖于安装在我的机器上的外部应用程序(我们称之为“工具”)上的某些任务。在我的程序中,我用 system( "tool myarguments" ); 调用它,工作正常。
现在,我想分发我的应用程序。当然,最终用户可能没有在他的机器上安装“工具”,所以我希望我的应用程序检查这一点,并为用户打印一条消息。所以我的问题是:
是否有一种可移植的方式来检查机器上是否存在应用程序?(假设我们知道它的名称并且可以通过机器的外壳访问它)。
附加信息:第一个想法是检查二进制文件是否存在,但是:
- 这取决于平台,
- 根据它的安装方式(从源代码构建、通过包安装...),它可能并不总是在同一个位置,尽管它可以通过本地路径访问。
我对这个问题的第一意见是“不”,但也许有人有想法?
参考:system()
【问题讨论】:
-
您是否可以以没有副作用的方式运行
tool(除了打印版本或使用信息)并让它返回 0 退出代码? -
@SirDarius 我不确定我是否理解您的评论。我想是的,我可以,但问题是如果它不存在会发生什么?
-
啊。刚找到一个相关的问题(不过只针对Linux),之前没找到:stackoverflow.com/questions/7045879
-
简单地说,system("tool")如果没有找到就会返回一个非零值。 (在 Windows 上测试:1,在 Linux 7F00 上)
标签: c++