基本思路是先定义一个FILE指针,用该指针接收popen()执行ps指令的返回值,再从指针中读取数据到缓存,根据得到的数据判断进程是否存在,怎么操作要看ps的参数了。

示例一

下面这个示例从网上找的,根据个数来判断进程是否存在

#include

#include

#include

#include

#include

#include

#include

#define BUFSZ PIPE_BUF

void err_quit(char *msg)

{

perror(msg);

exit(EXIT_FAILURE);

}

int main(int argc, char *argv[])

{

FILE* fp;

int count;

char buf[BUFSZ];

char command[150];

if(argc != 2)

{

printf("USAGE: example \n");

exit(EXIT_SUCCESS);

}

else

sprintf(command, "ps -C %s|wc -l", argv[1] );

if((fp = popen(command,"r")) == NULL)

err_quit("popen");

if( (fgets(buf,BUFSZ,fp))!= NULL )

{

count = atoi(buf);

if((count - 1) == 0)

printf("%s not found\n",argv[1]);

else

printf("process : %s total is %d\n",argv[1],(count - 1));

}

pclose(fp);

exit(EXIT_SUCCESS);

}

示例二

int detect_process(char * process_name)

{

FILE *ptr;

char buff[512];

char ps[128];

sprintf(ps,"ps -e | grep -c ' %s

",process_name);

strcpy(buff,"ABNORMAL");

if((ptr=popen(ps, "r")) != NULL)

{

while (fgets(buff, 512, ptr) != NULL)

{

if(atoi(buff)>=2)

{

pclose(ptr);

return CONFLICT;

}

}

}

if(strcmp(buff,"ABNORMAL")==0) /*ps command error*/

return ERROR;

pclose(ptr);

return NOERROR;

}

linux下qt检查进程是否存在,Linux下C语言实现查看进程是否存在相关推荐

  1. linux系统下Qt应用程序重启,嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws)...

    嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws) 应用软件一般都有这样的业务需求: 当有新版本的APP,则程序就需要执行更新,更新完毕后(所谓的更新大多就是以覆盖的方式),不需要关 ...

  2. linux下qt环境的运行,在Linux下使用QT环境来安装和运行WebKit

    Installing and Running WebKit in Linux Using Qt I'm coming to appreciate more and more all of the ha ...

  3. linux调用qt生成静态库文件下载,Centos7下编译openssl静态库与QT引用

    1.下载openssl版本:https://www.openssl.org/source/old/ 下载地址 2.我们下载版本为:openssl-1.0.2k 3.拷贝到Linux服务器任意目录 4. ...

  4. linux下qt的odbc库编译,linux qt QODBC连接sql server 驱动 有关问题 ,实在是没辙了

    linux qt QODBC连接sql server 驱动 问题 ,实在是没辙了 程序在linux下,现在需要连接windows的sqlserver . db = QSqlDatabase::data ...

  5. linux下qt生成可安装的程序,linux – 如何为Qt应用程序创建“安装”包?

    您可以从项目中创建debian包.据我所知,你想创建一个用于分发的包,所以我建议你从你的项目中创建一个debian包. Here是Debian Packaging系统的介绍.在文章中,他们在某些时候描 ...

  6. linux 怎么不检查gpg,如何在Linux上使用GPG加密和解密文件 | MOS86

    如何在Linux上使用GPG加密和解密文件... GnuPrivacy Guard (GPG) allows you to securely encrypt files so that only th ...

  7. qt在windows和linux效率,QT 程序在windows和linux上的打包

    方法:将release方式编译的可执行文件放到一个新建的文件夹中,然后将所有需要的库文件复制到同目录下. 使用ldd查阅需要的库文件. 将所有的库文件复制到当前目录,然后运行. 此处可以写一个脚本. ...

  8. 的环境下 qt 运行在_Ubuntu16.04环境下运行vins mono(环境配置及编译)之ROS kinetic的安装...

    所需环境:ubuntu16.04+ROS kinetic+opencv 3.3.1+eigen3.3.3+ceres solver 1.14 1.ROS Kinetic 的安装 (1)设置source ...

  9. linux下查看进程占用端口和端口占用进程命令

    Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...

最新文章

  1. apollo热布署mysql_docker部署apollo详细教程
  2. 去中心化存储项目终极指南 | Filecoin, Storj 和 PPIO 项目技术对比(下)
  3. LINQ学习之旅——准备(2)
  4. 关于ViewTreeObserver的理解
  5. [总结]Jquery api 快速参考
  6. 计算机表格最高分,excel表格里怎样算最高分
  7. 一步步编写操作系统 41 快表tlb 简介
  8. 安装Jmeter插件管理器
  9. Android 属性动画(一)
  10. [索尼]笔记本电脑驱动程序安装顺序?
  11. 服务器 cpu系列 至强系列那个好,至强系列 intel至强和酷睿I系列,到底哪个好
  12. python金额数字转大写完整代码
  13. windows错误代码
  14. 小米机顶盒安装第三方软件流程
  15. 服务器电源维修书籍,380G5服务器电源维修经历.pdf
  16. java哪个软件编程好学吗_java编程好学吗?
  17. 计算机与工作 生活的小论文,电脑与生活作文
  18. grpc、https、oauth2等认证专栏实战17:grpc-go自定义认证之base64验证介绍
  19. ERP销售人员快速上手
  20. PHP的开发效率比java要高,为什么现在java这么流行?

热门文章

  1. 一个客户端对应一个线程
  2. SpringMVC的数据响应-页面跳转-返回字符串形式(应用)
  3. 关于Spring容器管理Bean的过程以及加载模式
  4. 走过的弯路,你的套路
  5. 用循环求出1-100之间的偶数和
  6. 类属性-类属性的定义及使用
  7. 排序及其分类(一级)
  8. 魔兽服务器状态页面,谁动了我的服务器 WOW大服务器优势何时展现
  9. 服务器端虚拟化安卓,安卓服务器端实例
  10. 通用权限管理系统组件 (GPM - General Permissions Manager) - 支持请求