$ cat fork.c #include #include #include #include #include #include void print_time(const char *pfx) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); fprintf(stderr, "%s: %lld.%09lld\n", pfx, (long long)ts.tv_sec, (long long)ts.tv_nsec); } int main(void) { print_time("parent"); pid_t p = fork(); if (p == 0) { print_time("child"); exit(0); } else { wait(NULL); print_time("terminate"); } return 0; } $ cc -O2 fork.c $ time for i in `seq 1 10`; do echo $i; ./a.out; done 1 parent: 4398686.537642541 child: 4398686.537748040 terminate: 4398686.537958548 2 parent: 4398686.538785531 child: 4398686.538892553 terminate: 4398686.539060510 3 parent: 4398686.539724745 child: 4398686.539823872 terminate: 4398686.539950241 4 parent: 4398686.540690420 child: 4398686.540785870 terminate: 4398686.540900056 5 parent: 4398686.541547419 child: 4398686.541640665 terminate: 4398686.541757005 6 parent: 4398686.542347922 child: 4398686.542433363 terminate: 4398686.542533983 7 parent: 4398686.543091006 child: 4398686.543175445 terminate: 4398686.543264173 8 parent: 4398686.543787081 child: 4398686.543862984 terminate: 4398686.543979855 9 parent: 4398686.544548029 child: 4398686.544645603 terminate: 4398686.544757895 10 parent: 4398686.545287246 child: 4398686.545375623 terminate: 4398686.545507502 real 0m0.010s user 0m0.004s sys 0m0.006s