glibc相关内容

如何包装glibc库函数以自动使用'unsigned char'和'wchar_t'?

我总是将char用作unsigned char,将wchar_t用作wint_t.鉴于此,是否存在解决方案来更改功能接口以使用这些类型而无需重新编译glibc?另请参阅以下问题:解决方案 您可以将命令行选项传递给编译器,以使char默认为无符号.通过使用宏和typedef重新定义char来将接口更改为标准库功能不是实现目标的正确方法. 对于gcc和clang,请使用-funsigned-c ..
发布时间:2020-11-16 00:03:33 其他开发

getenv()的全局变量?

哪个全局变量包含getenv()的所有环境变量?在哪个glibc文件中,此var中充满了env vars? 我认为它是** environ,但是当我在bash中设置env var时,它仅输出SSH_AGENT_PID env var.为什么设置SSH_AGENT_PID,为什么它是唯一设置的? DOCUMENT_ROOT='/foopath/'; export DOCUMENT_RO ..
发布时间:2020-11-16 00:03:31 其他开发

fallocate和ftruncate有什么区别

他们都可以根据我的测试更改文件大小. 他们为什么都可以将文件更改为更大和更短? fallocate和ftruncate有什么区别? 解决方案 ftruncate是一个简单的单用途函数. 根据POSIX文档,它只是将文件设置为所需的长度: 如果fildes引用常规文件,则ftruncate()函数将导致文件大小被截断为length. ... ftruncate()也是标准的POS ..
发布时间:2020-11-16 00:02:26 服务器开发

为什么-O转换为gcc会导致"stat"解决?

试图进行搜索,但未找到任何内容.每当我尝试编译共享库和链接到它的测试二进制文件时,都会出现此错误: [root@hypervisor test-files]# ./test ./test: symbol lookup error: ./test-files.so: undefined symbol: stat [root@hypervisor test-files]# 在使用它后,我发现 ..
发布时间:2020-11-16 00:02:22 服务器开发

Double Free-崩溃或不崩溃

有人可以解释一下为什么连续两次释放a会导致崩溃,但是先释放a,然后释放b,然后再释放a不会崩溃吗? 我知道一个free会将堆块插入到一个双链接的free列表中.释放两次将在空闲列表中两次插入相同的块.但是为什么会发生崩溃? int *a = malloc(8); int *b = malloc(8); free(a); // free(a); // Would crash! fr ..
发布时间:2020-11-16 00:01:10 服务器开发

glibc的写工作如何?

我试图用-nostdlib编译一个名为write的简单程序,但出现错误: /path/to/file:3: undefined reference to `write' 我认为write是Unix上的东西,并且一直存在,但显然不是,事实证明libc具有write功能.我找到了源代码: /* Write NBYTES of BUF to FD. Return the number ..
发布时间:2020-11-15 23:59:54 服务器开发

pthread_cond_broadcast被dlsym破坏了?

我正在尝试使用LD_PRELOAD机制插入对pthread_cond_broadcast的调用.我插入的pthread_cond_broadcast函数仅调用原始的pthread_cond_broadcast.但是,对于非常简单的同时调用pthread_cond_wait和pthread_cond_broadcast的pthread代码,我要么在glibc中出现段错误(对于glibc 2.11.1 ..
发布时间:2020-11-15 23:59:49 其他开发

使用glibc,为什么在I/DHCP更改DNS服务器后我的gethostbyname失败?

如果我们的服务器(在设备上运行)在获取DHCP租约之前启动,则它将永远无法使用主机名进行连接. 如果发生这种情况,它可以通过IP地址而不是DNS查找主机. 最初,我认为Curl DNS缓存有问题,因为curl连接失败.但是我使用CURLOPT_DNS_CACHE_TIMEOUT来防止curl缓存地址,但是连接仍然失败. 解决方案 事实证明,如果glibc gethostbyna ..
发布时间:2020-11-15 23:59:40 其他开发

如何在dlopen()中拦截文件系统访问?

我想拦截dlopen()内部发生的所有文件系统访问.最初,LD_PRELOAD或-Wl,-wrap,似乎是可行的解决方案,但是由于某些技术原因,我无法使它们正常工作: ld.so在处理LD_PRELOAD时已经映射了自己的符号.对我来说,拦截初始加载并不重要,但是_dl_* worker函数此时已解析,因此将来的调用将通过它们.我认为LD_PRELOAD为时已晚. 以某种方式mallo ..
发布时间:2020-11-15 23:59:38 其他开发

有没有一种方法可以确定Linux上的库使用的线程本地存储模型

在Linux上是否可以查询共享库的TLS模型? (例如,使用ldd或其他工具). 我在使用"initial-exec"模型加载太多库时遇到麻烦,并且想确定哪些第三方库使用此模型(因此我可以释放一些插槽,例如通过静态链接) 这会导致错误: dlopen: cannot load any more object with static TLS 请参见此问题. 解决方案 ..

为什么将inet_ntoa设计为不可重入函数?

浏览GNU C库的源代码,我发现inet_ntoa是用 实现的 static __thread char buffer[18] 我的问题是,由于有必要使用reeentrant inet_ntoa,为什么GNU C库的作者不使用malloc来实现它? 谢谢. 解决方案 不使用堆的原因是为了符合标准(POSIX)和其他系统.该接口只是不能让您释放返回的缓冲区.它假定为静态存储.. ..
发布时间:2020-11-15 23:59:31 其他开发

为什么不建议静态链接glibc?

大多数在线资源表明您可以静态链接glibc,但不建议这样做;例如 centos软件包存储库: The glibc-static package contains the C library static libraries for -static linking. You don't need these, unless you link statically, which is high ..
发布时间:2020-11-15 23:59:23 C/C++开发

在GCC中,strlen()的实现在哪里?

有人可以指出我在GCC中strlen()的定义吗?我已经将grep 4.4.2发行版保留了大约一个半小时(而Google疯狂地搜索),但似乎找不到真正实现strlen()的位置. 解决方案 您应该使用的是glibc,而不是GCC-它似乎是在strlen.c中定义的-这是 glibc SVN在线存储库以获取strlen.c . 您应该查看 glibc 而不是gcc的原因是: GNU ..
发布时间:2020-11-15 23:58:11 其他开发

GHashTable,使用uint64_t作为键,并使用struct作为值

我正在学习GHashTable.尽管Stackoverflow中已经有一些示例,但它们只是一些常见情况.因此,我仍然不确定如何执行我的要求并决定寻求帮助. 我想使用uint64_t作为键,并使用struct作为值.我发现GLib中没有这样的内置哈希函数.只有一个g_int64_hash().尽管密钥是uint64_t,但大约只有52位.所以我认为gint64可以.但是我看到一些使用GINT_TO ..
发布时间:2020-11-15 23:58:02 服务器开发