Theoretically speacking, the who implementation using the C standard io library is faster then that using the C system calls. The reason is buffering. The C standard io library uses additional buffering (the kernel also does buffering by default, we learned later on that this buffering can be turned off). Regarding the use of ctime to convert the time value to a string, the function uses a globally allocated char *. Therefore, a second call to ctime will override the result obtained previously. The best way is to print the result as soon as it is obtained.