I am building programming contest software. A user’s program is received by our judging system and is evaluated by compiling it and running it via a fork() and exec(). The parent process waits for the child (submission’s process) to exit, and then cleans it up.
To give useful information about the program’s run, I want to measure the CPU time and peak memory used by the program. Does the Linux kernel keep track of these values? Is there any other way to get this information?
If you call the
wait4()system call to reap the child when it finishes, it will fill out astruct rusagestructure with the resource usage of the child (ru_utimeandru_stimehold the user and system CPU time used by the child respectively).