c++ - 检查外部应用程序是否可用的最佳方法是什么?

标签 c++ linux deployment dependencies

我有一个应用程序有可选的附加功能,具体取决于用户是否安装了该软件。

在 Linux 上,确定是否安装了 python 和 PyUsb 之类的最佳方法是什么?

如果有帮助,我正在开发 C++ Qt 应用程序。

最佳答案

这是低效的(需要 fork 和执行 /bin/sh)。一定有更好的方法!但作为一种通用方法...总是有 system()

(记得使用WEXITSTATUS()!注意让程序不间断!)

#define SHOW(X)  cout << # X " = " << (X) << endl

int main()
{
  int status;

  SHOW( status = system( "which grep > /dev/null 2>&1" ) );
  SHOW( WEXITSTATUS(status) );

  SHOW( status = system( "which no_matching_file > /dev/null 2>&1" ) );
  SHOW( WEXITSTATUS(status) );
}

还有 popen(),它可用于从程序中获取输出以验证版本号、库或诸如此类的东西。

如果您需要对子进程进行双向(读&写)访问,最好使用pipe()fork()exec() , close(), & dup2()

关于c++ - 检查外部应用程序是否可用的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/406966/

相关文章:

c++ - 如何在 CMake 中以可移植的方式获取 libstdcxx 隐式链接目录

c - 列出 Linux/*nix 上的所有真实用户以及与他们相关的数据

deployment - 部署/构建/制作网络应用程序的基础知识是什么?

c - 暂停执行 C 代码的 exe

visual-studio-2012 - IISExpress开发证书未安装

c++ - 如何使用 boost lexical_cast 库来检查输入

c++ - std::在 C++/17 中没有成员 "filesystem"

c++ - 无法在 C++ 中打开文件

linux - 是否有 VNC 服务器监听 Unix 域套接字而不是标准端口 (5900)?

linux - 如何使用 fw1-loggrabber 监控多个设备