Michael,
you can find an updated shadow.c that includes your requests here:
http://www.webalice.it/norsetto/shadow.c
It includes printing the average fps also while running (both to screen and stdout) and I also added a signal handler so that the application exit gracefully (printing the average fps) if it receives a SIGHUP, SIGINT or SIGTERM signal.
To specify a runlength use the -r or --runlegth option, for instance:
shadow --fps=1.0 --runlength=15.1
will collect fps every sec and stops after 15 sec.
Let me know if you need more.