I have a particular function (well, set of functions) that I want to start every 400ms. I’m not much of a C programmer, and so anything outside of the standard libraries is a mystery to me, as well as quite a bit within them.
My first thought is to use nanosleep to pause execution for 400ms in some sort of loop, but this of course doesn’t take into account the execution time of the code I will be running. If I could measure it, and if it seemed fairly certain that it ran for the same approximate duration after 10 or 20 tests, I could then nanosleep() for the difference. This wouldn’t be perfect, of course… but it might be close enough for a first try.
How do I measure the execution time of a C function? Or is there a better way to do this altogether, and what keywords do I need to be googling for?
You should be able to use settimer
Just put the code that you want to execute every 400ms inside the SIGALRM handler. This way you don’t need to account for the time that your code takes to run, which could potentially vary. I’m not sure what happens if the signal handler doesn’t return before the next signal is generated.
An outline of what some of the code might look like is shown below.