Per https://pubs.opengroup.org/onlinepubs/9699919799/functions/gettimeofday.html, the gettimeofday() will be removed in a future POSIX.1 spec and should be replaced with clock_gettime().
The issue 7 of POSIX.1 has recently been released, and this has moved gettimeofday() to obsolescent status: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap01.html
We should replace uses of gettimeofday() with clock_gettime() assuming this is supported on all distros.
clock_gettime() uses struct timespec (seconds and nanoseconds) rather than the struct timeval (seconds and microseconds) used by gettimeofday().
select() should be replaced with pselect().