最近用qt做嵌入式上位机开发,需要观测下程序的内存占用情况,根据搜到的资料需要读取proc下对应的自身进程的文件信息,找了一圈资料都没一个说到点上的,都是说的QProcess什么的,最后还是在国外的网站上找到了,其实很简单,Qt自带就有了的,一开始自己也是这样想,但是苦于找不到。
qint64 pid = QApplication::applicationPid();
那么查看自己的内存占用信息就简单了
qint64 pid = QApplication::applicationPid();
QString fileName = "/proc/"+QString::number(pid)+"/status";
qDebug()<<fileName;
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){
return;
}
qDebug()<<file.readAll();
运行之后打印信息如下
"Name: XTHmi
Umask: 0022
State: R (running)
Tgid: 173
Ngid: 0
Pid: 173
PPid: 171
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Groups: 0 10
NStgid: 173
NSpid: 173
NSpgid: 171
NSsid: 171
VmPeak: 36840 kB
VmSize: 36840 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 11188 kB
VmRSS: 11188 kB
RssAnon: 2628 kB
RssFile: 8436 kB
RssShmem: 124 kB
VmData: 2856 kB
VmStk: 132 kB
VmExe: 128 kB
VmLib: 17272 kB
VmPTE: 34 kB
VmSwap: 0 kB
CoreDumping: 0
Threads: 1
SigQ: 0/716
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000180015eef
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
NoNewPrivs: 0
Speculation_Store_Bypass: unknown
Cpus_allowed: f
Cpus_allowed_list: 0-3
voluntary_ctxt_switches: 1076
nonvoluntary_ctxt_switches: 296
每个信息代表的什么大家关键字搜下就好了