1
0
mirror of https://github.com/shirou/gopsutil.git synced 2025-05-02 22:17:08 +08:00

Merge pull request #382 from acd/master

Only read /proc/stat once when cpu.Times(true) is called on Linux
This commit is contained in:
shirou 2017-07-03 00:10:39 +09:00 committed by GitHub
commit aa0a3bce9d

View File

@ -33,18 +33,15 @@ func Times(percpu bool) ([]TimesStat, error) {
filename := common.HostProc("stat") filename := common.HostProc("stat")
var lines = []string{} var lines = []string{}
if percpu { if percpu {
var startIdx uint = 1 statlines, err := common.ReadLines(filename)
for { if err != nil || len(statlines) < 2 {
linen, _ := common.ReadLinesOffsetN(filename, startIdx, 1) return []TimesStat{}, nil
if len(linen) == 0 {
break
} }
line := linen[0] for _, line := range statlines[1:] {
if !strings.HasPrefix(line, "cpu") { if !strings.HasPrefix(line, "cpu") {
break break
} }
lines = append(lines, line) lines = append(lines, line)
startIdx++
} }
} else { } else {
lines, _ = common.ReadLinesOffsetN(filename, 0, 1) lines, _ = common.ReadLinesOffsetN(filename, 0, 1)