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; }