Why not just fork the subprocess rather than forking the monitoring process?
If it were done the other way around then we'd have to poll for the termination of the forked target process. Either the poll duration would have to be really small or the monitor would contain readings for some time after the end of the target.
This isn't so bad when running with an interval of 1 second... but for an interval of 1 minute (or longer) it can start to give odd readings.
To be honest, I'm thinking of removing the very final reading anyway. Or, at least documenting that the final reading may be slightly misleading.