#define _POSIX_C_SOURCE 200809L #include #include #include #include #include #include extern char **environ; static void bloat_up(size_t n, int frag, int dirty) { size_t pg = sysconf(_SC_PAGESIZE); size_t i; if (frag) { n /= pg; for (i=0; itv_sec = 0; clock_gettime(CLOCK_MONOTONIC, t0); if (!use_fork) { posix_spawn(&pid, prog, 0, 0, (char *[]){prog, 0}, environ); } else if (!(pid=fork())) { execve(prog, (char *[]){prog, 0}, environ); _exit(1); } waitpid(pid, 0, 0); return 0; } t2.tv_sec -= t1.tv_sec; if ((t2.tv_nsec -= t1.tv_nsec) < 0) { t2.tv_nsec += 1000000000; t2.tv_sec--; } printf("spawn time: %jd.%.9d\n", (intmax_t)t2.tv_sec, (int)t2.tv_nsec); return 0; }