检测指定进程是否存在是否运行

小总结一下c/c++检测指定进程是否存在的方式;

方式不唯一,列举本人亲测的方式,没有过多思考,简单实现。

linux:

    //linux判断进程是否存在
    FILE* fp;
    char szbuffer[16] = {0};
    fp = popen("ps -ef|grep processName | grep -v grep |wc -l", "r");
    //1:存在 0:不存在
    fread(szbuffer, 1, 1, fp);    //第一个字节就是fp读取出来的结果 0或1,一个字节就可以,sizeof(szbuffer)会有空格补齐,strcmp对比时有误
    if(strcmp(szbuffer, "1") != 0)
    {
        printf("processName is not exist.\n");
    }
    else
    {
        printf("processName is exist.\n");
    }
    pclose(fp);

通过命令行命令获取指定进程的状态,利用popen执行命令并将结果存储到文件指针中,读取指针结果。

windows:


DWORD GetProcessidFromName(LPCTSTR processName)
{
    PROCESSENTRY32 pe;
    DWORD id=0;
    HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    pe.dwSize=sizeof(PROCESSENTRY32);
    if(!Process32First(hSnapshot,&pe))
        return 0;
    while(true)
    {
        pe.dwSize=sizeof(PROCESSENTRY32);
        if(Process32Next(hSnapshot,&pe)==FALSE)
            break;
        if(strcmp(pe.szExeFile,processName)==0)
        {
            id=pe.th32ProcessID;
            break;
        }
    }
    CloseHandle(hSnapshot);
    return id;
}

qt:

    QProcess process;
    QString cmd = "tasklist";
    process.start(cmd);     //打开任务列表
    process.waitForFinished();                    //等待进程结束
    QString str = process.readAllStandardOutput();//获取执行命令后的输出内容

    if(str.contains(processName))//判断是否有包含当前指定的进程名
    {
        qDebug()<<"processName exist.";
    }
    else
    {
        qDebug()<<"processName not exist.";
    }

只做了简单实现,记录一下,以防后续有需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值