c++ - 读取终端中的输出并将其与字符串进行比较

标签 c++ linux bash ubuntu

如何检查像“fortune”这样的程序是否已经以编程方式安装? 这是我的代码:

if(choice==1)
{
    cout<<"Need to Install program first? [y/n]: ?"<<endl;
    cin>>yn;
    if(yn=='y' || yn=='Y')
    {
            cout<<"Installing..."<<endl;
            cout<<"Enter password if asks:"<<endl;
            system(" sleep 2");
            system("sudo apt-get install fortune");


    }

我已经尝试过,但无法得到我想要的。

dpkg-query -1W fortune  2>&1 |  read line ; do echo $line | say ; done

更新:我很久以前就解决了这个问题,感谢@John Zwinck

最佳答案

如果您想知道是否安装了像fortune这样的程序,您只需检查它是否存在即可!

if (access("/usr/bin/fortune", R_OK | X_OK) == 0)
    printf("we have good fortune\n");

如果您有一个程序应该位于 $PATH 中的某个位置,但您不知道在哪里,您可以尝试运行它:

if (system("fortune --help") != -1)
    printf("we have good fortune\n");

关于c++ - 读取终端中的输出并将其与字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34281331/

相关文章:

C++ uint64 和 *uint64 有什么区别?

c++ - ROS2发布网格标记

java - 在 C++ 和 Java 之间传播 Oracle 事务

linux - 在 Linux 中加载显示驱动程序时使用 udev 运行脚本

linux - Perl 一个衬垫可以在具有特殊字符的许多不同值上匹配路径中的精确单词

bash - .profile 有调用.bashrc 的语句,但是.bashrc 没有执行

c++ - SQLite 绑定(bind)参数到通配符

python - 在 Docker 容器中找不到共享库 libpython3.5(但覆盖工作正常)

linux - 如何从多个位置(对应多个 GCC 版本)链接库?

linux - 我可以使用本地脚本通过 SSH 连接到多个服务器(从本地到 servA,然后从 servA 到 servB)吗?