我看到太多的链接显示strace在其输出中将gettimeofday列为系统调用,但就我而言,我感觉它已分解为其他调用。我想念什么吗?
我正在Linux 4.4内核和ubuntu 16.04上的VM中运行
root@ak-dev-1:~# cat trial.c && gcc trial.c && strace -c ./a.out
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
int main() {
struct timeval tv;
gettimeofday(&tv,NULL);
printf("%lu.%lu\n",tv.tv_sec,tv.tv_usec);
}
1584465316.623916
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
0.00 0.000000 0 1 read
0.00 0.000000 0 1 write
0.00 0.000000 0 2 open
0.00 0.000000 0 2 close
0.00 0.000000 0 3 fstat
0.00 0.000000 0 7 mmap
0.00 0.000000 0 4 mprotect
0.00 0.000000 0 1 munmap
0.00 0.000000 0 3 brk
0.00 0.000000 0 3 3 access
0.00 0.000000 0 1 execve
0.00 0.000000 0 1 arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00 0.000000 29 3 total
root@ak-dev-1:~# uname -a
Linux ak-dev-1 4.4.0-137-generic #163-Ubuntu SMP Mon Sep 24 13:14:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux