Reputation: 395
This is the command that i execute
$ ps -e
PID PPID PGID WINPID TTY UID STIME COMMAND
4372 1 4372 4372 ? 197608 03:44:57 /usr/bin/mintty
6476 4372 6476 6208 pty0 197608 03:44:58 /usr/bin/bash
14484 6476 14484 12888 pty0 197608 13:23:48 /usr/bin/ps
I get 1d array of strings using bufio
scanner.scanLines. I need to convert this into array of structs:
type ProcessInfo struct {
PID string `json:"PID"`
PPID string `json:"PPID"`
PGID string `json:"PGID"`
WINPID string `json:"WINPID"`
TTY string `json:"TTY"`
UID string `json:"UID"`
STIME string `json:"STIME"`
COMMAND string `json:"COMMAND"`
}
Any help would be appreciated.
Upvotes: 1
Views: 94
Reputation: 2817
There is a handy strings.Fields function in strings package that helps to parse this kind of output. Go likes pragmatic approaches, so the naive implementation would be:
Assuming your array is named lines
, just do something like this:
var pinfos []ProcessInfo
for _, line := range lines {
fields := strings.Fields(line)
pi := ProcessInfo{
PID: fields[0],
PPID: fields[1],
PGID: fields[2],
WINPID: fields[3],
TTY: fields[4],
UID: fields[5],
STIME: fields[6],
COMMAND: fields[7],
}
pinfos = append(pinfos, pi)
}
See the whole code here: https://play.golang.org/p/wo8FFiYabA
Upvotes: 3