发布
社区首页 >问答首页 >Linux C读单字节?

Linux C读单字节?
EN

Stack Overflow用户
提问于 2015-04-22 02:16:27
回答 4查看 5.5K关注 0票数 1

我在JNA中工作以调用C函数,并且我非常习惯于读取单个字节的Javaread()函数。在C语言中是否有一种不用声明缓冲区就能做到这一点的方法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-22 02:19:59

代码语言:javascript
代码运行次数:0
复制
char oneByte;
int r=read(fd, &oneByte, 1);

是的,应该管用。

票数 7
EN

Stack Overflow用户

发布于 2015-04-22 02:20:09

这取决于您想要读取流(即文件*)还是文件描述符。

对于一条小溪,你有

代码语言:javascript
代码运行次数:0
复制
getc(FILE *stream);

对于文件描述符,可以使用字节变量作为缓冲区,如下所示

代码语言:javascript
代码运行次数:0
复制
unsigned char b; //or signed if you prefer
read(fd, &b, 1);
票数 2
EN

Stack Overflow用户

发布于 2015-04-22 12:13:36

对于建议使用read()的答案,应该如下所示:

代码语言:javascript
代码运行次数:0
复制
char b;
int r;
while((r=read(fd,&b,1))==-1 && errno==EINTR) {}
if(r==.....

原因是,如果信号的传递中断,那么read()就需要重新启动。如果你不测试EINTR,你可能会面临随机的,很难找到错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29786548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档