In my go program, I need to run top
to continuously monitoring a specific process. But top
does not give me the timestamp when each line is recorded. I'm thinking about prepending it to the outputs my self:
top := exec.Command("top", "-p", pid)
r, w := os.Pipe()
top.Stdout = w
top.Start()
This way I can read the outputs from r
at one end of the pipe. I wonder how can I fire an action to get the current timestamp and prepend it to the output whenever there's a new line from top.Stdout
? I think it should be like a callback or Python's generator, but I'm not sure how to do it in Go.