C++调用linux命令并获取返回值

摘要:
Qt封装了相关的方法,但是因为我的命令使用管道命令,所以会出现意外的结果,所以我使用Linux系统的本地方法。下面是一个确定流程是否存在的示例。当前存在问题。当Linux返回多行时,程序只能读取返回值的第一行。目前,我的解决方案是将Linux命令的输出重定向到一个文件,然后程序将读取该文件。

qt中封装了相关的方法, 但是因为我的命令中用到了管道命令, 出现了非预期结果, 所有改用了linux系统原生的方法。

下边是一个判断某进程是否存在的例子。

当前存在一个问题,当linux返回多行时, 程序只能读取返回值的第一行。目前我的 解决方法是,将linux命令的输出重定向到一个文件,然后程序再去读这个文件。

#include <stdlib.h>

bool IsProcessOn()
{
    string check_command = " ps -ef | grep -w process_name | grep -v grep | wc -l ";
    char return_value[150];
    int count = 0;
    FILE* ptr = NULL;
    if((ptr = popen(check_command.c_str(), "r")) == NULL)
    {
        return false;
    }
    memset(return_value, 0, sizeof(return_value));
    if((fgets(return_value, sizeof(return_value),ptr))!= NULL)
    {
        count = atoi(return_value);
    }
    pclose(ptr);
    if(count <= 0)
    {
        return false;
    }
    return true;
}

免责声明:文章转载自《C++调用linux命令并获取返回值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何关闭WIN7自动配置 IPV4 地址 169.254placeholder下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux系统下安装python3.7.3环境

这里用到的Linux系统是centos7系统,centos7是自带py的但是py的2.7.5版本                         连接服务器的使用的是SSH Secure shell 1.首先安装依赖包1)安装gcc编译器   gcc编译器有些系统版本已经默认安装了,可以通过 gcc --version进行查看              安...

修改Kali Linux终端主题

修改KaliLinux背景图片在KaliLinux中,默认XFCE桌面背景图片保存在/usr/share/backgrounds/xfce目录。大学霸IT达人默认Undercover桌面背景图片保存在/usr/share/kali-undercover/backgrounds目录。如果用户不希望使用默认桌面,则可以将修改的背景图片保存到对应的目录。然后,依...

关于Linux上的SSH服务无法启动,提示“/var/empty/sshd must be owned by root and not group or world-writable”错误

首先通过物理终端进入到linux上,手工检查ssh发现没运行# /etc/init.d/sshd statussshd is stopped 手动启动服务,发现报告权限错误。# /etc/init.d/sshd start Starting sshd:/var/empty/sshd must be owned by root and not group o...

Debian 安装 VMware

(1)检查有没有安装gcc可以通过which gcc或者whereis gcc查看。发现已安装(2)安装内核头文件内核头文件默认是会安装到/usr/src目录下。ls /usr/src查看发现目录为空,即没有安装。hohoer@debian:~$ ls /cdromhohoer@debian:~$ mount /cdrommount: block devi...

[linux]如何更新Ubuntu的数据源

为何要更新数据源?国外的数据源,除了速度慢这个次要因素,更可怕的是有些链接根本不通,导致用户既没有下载东西,也没有看到实质性提示;潜在的危险就是编译错误不能定位,严重时甚至重装系统。本文介绍几个国内有用的源,必要的时候可以更新。 1 更新方法 1)用root用户登入,没有root用户密码?先建一个吧: 〉〉〉sudo passwd root 〉〉〉su 〉...

LINUX进程组调度机制分析【转】

转自:https://oenhan.com/task-group-sched 又碰到一个神奇的进程调度问题,在系统重启过程中,发现系统挂住了,过了30s后才重新复位,真正系统复位的原因是硬件看门狗重启的系统,而非原来正常的reboot流程。硬件狗记录的复位时间,将不喂狗的时间向前推30s分析串口记录日志,当时的日志就打印了一句话:“sched: RT th...