gpt4 book ai didi

c - 文件系统上的 linux-vdso.so.1 在哪里

转载 作者:行者123 更新时间:2023-12-03 22:52:08 26 4
gpt4 key购买 nike

我正在学习 VDSO,编写了一个调用 gettimeofday() 的简单应用程序

#define _GNU_SOURCE
#include <sys/syscall.h>
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
struct timeval current_time;

if (gettimeofday(&current_time, NULL) == -1)
printf("gettimeofday");

getchar();

exit(EXIT_SUCCESS);
}

二进制文件上的 ldd 显示“linux-vdso”
$ ldd ./prog
linux-vdso.so.1 (0x00007ffce147a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6ef9e8e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6efa481000)

我找到了 libvdso 库,但我的文件系统中没有这样的库。
sudo find / -name 'linux-vdso.so*'

图书馆在哪里?

最佳答案

它是一个虚拟共享对象,磁盘上没有任何物理文件;它是内核的一部分,在加载时会导出到每个程序的地址空间。

主要目的是提高调用某些系统调用的效率(否则会产生 performance issues like this )。最突出的是 gettimeofday(2) .

您可以在此处阅读更多相关信息:http://man7.org/linux/man-pages/man7/vdso.7.html

关于c - 文件系统上的 linux-vdso.so.1 在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58657036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com