标签: libc

是否有任何普通的理由使用open()而不是fopen()?

经过相当长的一段时间后,我正在用C做一个小项目.这些碰巧包括一些文件处理.我在各种文档中注意到有返回FILE *句柄的函数和返回(小整数)描述符的其他函数.这两组功能都提供了我需要的相同基本服务,所以我使用它并不重要.

但我对收藏智慧感到好奇:使用fopen()和朋友,还是open()朋友更好?

编辑因为有人提到缓冲与未缓冲和访问设备,我应该补充说,这个小项目的一部分将在FUSE下编写用户空间文件系统驱动程序.因此,文件级访问可以像在"文件"(即图像)上一样容易地在设备(例如CDROM或SCSI驱动器)上.

c posix file libc

5
推荐指数
2
解决办法
6213
查看次数

装配分段故障

我在运行以下汇编代码时遇到错误

#cpuid using C library Functions
.section .data
output:
 .asciz "The Processor Vendor ID is '%s'\n"
.section .bss
 .lcomm buffer, 12
.section .text
.globl main
main:
 movq $0, %rax
 cpuid
 movq $buffer, %rdi
 movq %rbx, (%rdi)
 movq %rdx, (%rdi)
 movq %rcx, (%rdi)
 pushq $buffer
 pushq $output
 call printf
 addq $8, %rsp
 pushq $0
 call exit
Run Code Online (Sandbox Code Playgroud)

它遇到了C库部分的分段错误调用:call printf它在x86_64模式下运行.在编译x64代码时,我错过了关于c库的任何内容?或者代码有问题

谢谢

64-bit assembly libc

5
推荐指数
1
解决办法
2310
查看次数

是否有任何不需要Linux内核的libc项目

我正在使用几乎没有OS支持的自定义用户空间环境:只有一个char设备,大容量存储接口和一个网络套接字.

为了向这个平台提供C编程,我需要一个libc.是否有任何可配置的libc项目,以便我可以将低级IO映射到我有权访问的小API?

AFAIK glibc和uclibc期待linux系统调用,所以我不能使用它们(不试图模拟linux系统调用,这是我更喜欢避免的).

c libc

5
推荐指数
1
解决办法
250
查看次数

什么是WIFEXITED,WEXITSTATUS等中的"W"的助记符?

什么是"W"的助记符,即"W"在以下宏中的含义:

int WIFEXITED (int status)
int WEXITSTATUS (int status)
int WIFSIGNALED (int status)
int WTERMSIG (int status)
int WCOREDUMP (int status)
int WIFSTOPPED (int status)
int WSTOPSIG (int status)
Run Code Online (Sandbox Code Playgroud)

另请参阅流程状态完成.

c libc

5
推荐指数
2
解决办法
774
查看次数

如何将libc.a链接到arm-linux中的共享库中使用arm-none-linux-gnueabi-gcc

在一个项目中,我的同事创建了一个静态库,例如liba.a,它与app链接.

在liba.a中,他将libc malloc()覆盖为其所有者版本.

我创建了一个共享库libs.so,它也与app链接.

问题是当我的libs.so与app链接时,我的libs.so中使用的malloc()将是liba.a中的那个,而不是标准libc.so中的那个,这会导致问题.

然后,我想将libc.a静态链接到我的libs.so,我为gcc使用了-static -shared -fPIC标志.

但我总是得到arm-2012.03/bin /../ lib/gcc/arm-none-linux-gnueabi/4.6.3 /../../../../ arm-none-linux-gnueabi/bin/ld:arm-2012.03/bin /../ arm-none-linux-gnueabi/libc/usr/lib/libc.a(dl-tsd.o)(.text + 0x14):共享对象中不允许R_ARM_TLS_LE32重定位.

有没有人有这个想法?

谢谢你.

linux linker arm shared-libraries libc

5
推荐指数
1
解决办法
4615
查看次数

有没有可以使用libc中的函数fma的情况?

我遇到这个页面,发现有一个奇怪的浮动乘法加法 函数 - fmafmaf.它说结果是这样的:

 (x * y) + z             #fma(x,y,z)
Run Code Online (Sandbox Code Playgroud)

并且值是无限精度并且对结果格式进行一次舍入.

然而,AFAICT我以前从未见过这样的三元手术.所以我想知道这个功能的cumstom用法是什么.

c floating-point posix libc fma

5
推荐指数
1
解决办法
780
查看次数

在C++中未读取文件

我正在尝试读取同时写入磁盘的文件.我需要阅读特定大小的块.如果读取的大小小于特定大小,我想要读取文件(类似于ungetc所做的,而不是char []),然后再试一次.附加到已读取的字节对我来说不是一个选项.

这怎么可能?

我尝试通过以下方式保存当前位置:

FILE *fd = fopen("test.txt","r+");
fpos_t position;
fgetpos (fd, &position);
Run Code Online (Sandbox Code Playgroud)

然后读取文件并将指针放回其前面的位置.

numberOfBytes = fread(buff, sizeof(unsigned char), desiredSize, fd) 
if (numberByBytes < desiredSize) {
    fsetpos (fd, &position);
}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有奏效.

c c++ io fstream libc

5
推荐指数
1
解决办法
631
查看次数

有关libc指针加密的问题

glibc并且eglibc有一个PTR_MANGLE,它加密可写内存中的指针(更准确地说,'XOR'而不是'加密').

我没有找到关于该功能的更多阅读.man -k PTR_MANGLE返回没有点击,谷歌正在返回一些肤浅的喋喋不休.Drepper 在Live Journal上的Pointer加密是为数不多的权威文章之一.

有没有深入的文件?它可以扩展到用户空间进程,还是仅限于运行时库?如果是这样,启用该功能的编译器开关或选项是什么?可以在运行时禁用该功能吗?

c security libc

5
推荐指数
1
解决办法
1035
查看次数

gcc默认链接到libc.a或libc.so吗?

我在Ubuntu 16.04 64位上使用gcc 5.4.0.当我编译一个程序时:

gcc -o prog prog.c
Run Code Online (Sandbox Code Playgroud)

GCC自动链接到C标准库,所以我没有专门这样做.

  1. 如何查看gcc链接到哪个C库,libc.a或libc.so,还是其他什么?
  2. 在什么情况下它链接到libc.so?是否需要像其他共享库一样在运行时指定libc.so?

提前致谢.

c gcc libc

5
推荐指数
1
解决办法
1098
查看次数

fgets(), signals (EINTR) and input data integrity

fgets() was intended for reading some string until EOF or \n occurred. It is very handy for reading text config files, for example, but there are some problems.

First, it may return EINTR in case of signal delivery, so it should be wrapped with loop checking for that.

Second problem is much worse: at least in glibc, it will return EINTR and loss all already read data in case it delivered in middle. This is very unlikely to happen, but …

c posix signals stdio libc

5
推荐指数
2
解决办法
135
查看次数

标签 统计

libc ×10

c ×8

posix ×3

64-bit ×1

arm ×1

assembly ×1

c++ ×1

file ×1

floating-point ×1

fma ×1

fstream ×1

gcc ×1

io ×1

linker ×1

linux ×1

security ×1

shared-libraries ×1

signals ×1

stdio ×1