QT popen函数
popen函数通过创建一个管道的方式打开一个进程,并调用shell。
-
函数所需头文件:#include<stdio.h>
-
函数原型:FILE* popen(const char* command, const char* type);
-
popen函数第一个参数command是一个以NULL结尾的字符串,这个字符串应是一个shell命令,这个命令会被送到 /bin/sh中,并以 -c执行即被shell执行。
-
popen函数第二个参数type的值只能是r或w,因为管道是被定义为单向的。
-
popen函数作用
-
popen函数建立管道连到子进程的标准输出设备或标准输入设备,然后返回一个文件指针,随后进程可利用此文件指针来读取子进程的输出设备或是写入到子进程的标准输入设备中。。
-
popen函数使用示例
环境:CentOS7.6 Qt 5.9.4 QSring strCmd = "cat /proc/cpuinfo |grep MHz|uniq\n"; FILE* fp = popen(strCmd.toLocal8Bit().data(), "r"); if (nullptr != fp) { char buf[1024] = {0}; char result[2000] = {0}; while (fgets(buf, sizeof(buf), fp)) { strcat(result, buf); if (strlen(result) > sizeof(buf)) { break; } } pclose(fp); //记得释放资源 fp = nullptr; //result即为执行终端命令“cat /proc/cpuinfo |grep MHz|uniq”得到的结果 //后续可对result 进行其他处理 }