标签: libc

getline()带有文件描述符而不是文件指针

据我所知,没有getline()与文件描述符相同的libc ,而不是使用FILE *.

是否有(技术)原因?

c posix libc getline

7
推荐指数
1
解决办法
5184
查看次数

在文件ld-linux-x86-64.so.2中未定义版本GLIBC_PRIVATE

是否有人可以在gcc版本问题上给初学者一些帮助?

我在遇到了这个问题"version GLIBCXX_3.4.20' not found"。在我链接之后:如何在CentOS 7.2上用yum安装gcc 5.3? 我遇到了以下额外问题:

scl enable devtoolset-7 bash
git: relocation error: libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference 
Run Code Online (Sandbox Code Playgroud)

gcc libc

7
推荐指数
1
解决办法
1万
查看次数

用glibc打电话给gettid

我在glibc工作,我需要得到当前线程的id.为此我使用 syscall(SYS_gettid);问题是,我被迫包括bits/syscall.h而不是理想的情况即 sys/syscall.h.

sys/syscall.h 内部调用bits/syscall.h但是用#ifndef _LIBC宏包装.即

     #ifndef _LIBC
        /* The Linux kernel header file defines macros `__NR_<name>', but some
           programs expect the traditional form `SYS_<name>'.  So in building libc
           we scan the kernel's list and produce <bits/syscall.h> with macros for
           all the `SYS_' names.  */
       # include <bits/syscall.h>
    #endif
Run Code Online (Sandbox Code Playgroud)

bits/syscall.h指出"永远不要直接使用bits/syscall.h;而是包含sys/syscall.h".

由于_LIBC我将在我的情况下定义,因为我正在直接编写代码malloc.c,请建议我如何克服这个问题.

谢谢,卡皮尔

malloc glibc libc system-calls linux-kernel

6
推荐指数
1
解决办法
2万
查看次数

有没有linux iptables的api,以便我的程序可以添加防火墙规则

我正在使用 libc 编写一个应用程序,为此我正在寻找 iptables 的 api,以便我可以使用我的程序添加防火墙规则。是否有任何可用的 api 集来执行此操作。

c linux gcc iptables libc

6
推荐指数
1
解决办法
7281
查看次数

使用 gdb 在 LibC 中设置断点

为什么我不能在 LibC 中的导出函数中设置断点(使用 gdb)?作为动态链接的 Libc,它必须包含它导出的函数的符号。我不应该能够为这些函数中的任何一个设置断点吗?

我只是试图做:

(gdb) b _IO_vfprintf@@GLIBC_2.2.5
Function "_IO_vfprintf@@GLIBC_2.2.5" not defined.
Run Code Online (Sandbox Code Playgroud)

但是查看 ELF 文件中的 dynamyc-symbols 表,该符号确实存在:

 127: 0000000000049cf0 20904 FUNC    GLOBAL DEFAULT   12 _IO_vfprintf@@GLIBC_2.2.5
Run Code Online (Sandbox Code Playgroud)

linker gdb libc debug-symbols

6
推荐指数
1
解决办法
2338
查看次数

为什么libc中没有gmtime的反函数?

在 libc 中有两个函数可以将系统时间转换为日历时间 -gmtimelocaltime,但只有localtime反函数 - mktime。为什么 没有反函数gmtime,如果不应该有,为什么gmtime存在?

time posix libc

6
推荐指数
2
解决办法
2436
查看次数

libm 用于哪些功能?

据我所知,一些数学函数包含在 libc 中,而另一些则包含在 libm 中。我通过实验发现:

$ nm --dynamic --defined-only /lib/x86_64-linux-gnu/libm.so.6 | grep -w abs 
$ nm --dynamic --defined-only /lib/x86_64-linux-gnu/libc.so.6 | grep -w abs 
T abs
Run Code Online (Sandbox Code Playgroud)

是否有关于 libm 必须提供哪些数学函数的要求?libc 和 libm 是否一起提供 C 标准所需的所有数学函数?

c linux glibc libc libm

6
推荐指数
1
解决办法
6315
查看次数

如何修复 Clang Tidy 中的 llvmlibc-restrict-system-libc-headers 检查?

我不明白llvmlibc-restrict-system-libc-headersClang Tidy 中的检查(链接)。

我在 C++ 代码中包含 C 库,如下所示:

#include <cstddef>
Run Code Online (Sandbox Code Playgroud)

我应该更改什么来修复此 Clang Tidy 检查?它应该被修复吗?

c++ libc llvm clang clang-tidy

6
推荐指数
1
解决办法
2617
查看次数

C 程序中可以进行系统调用吗?

C 程序中可以进行系统调用吗?考虑一下:

int main()
{
    int f = open("/tmp/test.txt", O_CREAT | O_RDWR, 0666);
    write(f, "hello world", 11);
    close(f);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在此示例代码中,openwrite、 和close是库函数。在我的搜索过程中,我得出的结论是它们是函数而不是系统调用。这些函数(openwriteclose)中的每一个都会进行系统调用。

问题

  • 我的结论首先正确吗?
  • C 程序中可以进行系统调用吗?
  • 如果系统调用可以在 C 程序中发生,那么它们什么时候发生?请举个例子。
  • 是否可以通过编译选项来控制使用库函数与直接进行系统调用?例如,我们是否可以使用一些选项编译上面的程序,以便直接进行write和系统调用,而如果我们使用不同的选项编译它,则它会调用库函数?read

c function libc system-calls

6
推荐指数
1
解决办法
2196
查看次数

Chromium OS 中 fread 的这种实现是由什么组成的?

在 Chromium-os/glibc中查看fread源代码,对此越来越感到困惑。

注意:我说的是源代码,而不是fread其他相关问题的使用


作为宏的函数原型

首先,我对 fread 被声明为一个宏的方式感到惊讶,它带有函数名,然后是它的参数,最后是它的参数类型:

/* Read NMEMB chunks of SIZE bytes each from STREAM into P.  */

size_t
DEFUN(fread, (p, size, nmemb, stream),
      PTR p AND size_t size AND size_t nmemb AND register FILE *stream)
Run Code Online (Sandbox Code Playgroud)

这背后的理由是什么,为什么不

size_t fread(PTR p, size_t size, size_t nmemb, register FILE * stream)
Run Code Online (Sandbox Code Playgroud)

哪个更具可读性?


什么是 __fillbf(register FILE *stream)

我对这一行特别困惑:

int c = __fillbf(stream);
Run Code Online (Sandbox Code Playgroud)

并且在任何地方都找不到这个功能。我认为这可能是一个我还不知道的系统调用,但它不是表的一部分

那么背后的真正代码是__fill_bf(register FILE *)什么?

编辑:感谢DYP的宏定义, …

c libc

6
推荐指数
1
解决办法
98
查看次数

标签 统计

libc ×10

c ×5

gcc ×2

glibc ×2

linux ×2

posix ×2

system-calls ×2

c++ ×1

clang ×1

clang-tidy ×1

debug-symbols ×1

function ×1

gdb ×1

getline ×1

iptables ×1

libm ×1

linker ×1

linux-kernel ×1

llvm ×1

malloc ×1

time ×1