node 上的获取当前时间是调用系统的 api 吗?
資深大佬 : wszgrcy 58
虽然 js 不是直接跑在系统里的,但是还是想知道点 node 和系统之间的关系,比如获得时间是不是也是调用的系统 api,和在 windows 下用 ffi 调用它的 api 是否能获得相同的结果?有这方面的大佬吗
大佬有話說 (8)
虽然 js 不是直接跑在系统里的,但是还是想知道点 node 和系统之间的关系,比如获得时间是不是也是调用的系统 api,和在 windows 下用 ffi 调用它的 api 是否能获得相同的结果?有这方面的大佬吗
1 的话,我不知道怎么操作,但结果和系统时间一样,因为系统时间也就是 CMOS 时间…… 除非被 LD_PRELOAD 之类替换掉 syscall ?
2 的话,其中包含 “需要联网” 这一前提和 “通过 NTP 协议进行了交互” 这一 side effect,应当显式指明。
既然是 vDSO,那么它就能在用户态实现。实现上根据要求的精度不同会有差异,其中之一落到 rdtsc 指令
也可以像 go runtime 做的那样,直接解析 auxv、解析符号、调用 vdso。
也可以直接 syscall 225 (大概是这个数,不确定),这样就不是通过 vdso 的,strace 就能看见。当然,在一些极端情况下,vdso 会 fallback 到系统调用上。
node 是啥情况可能得自己探索一番,也无外乎这几样了。
(最近了解了一些这方面知识,因为在做一个运行时注入程序修改时间的工具