繁体   English   中英

Linux中C语言中的文件系统

[英]File systems in C in linux

我正在使用Linux在c语言中编写代码,并试图从文件中读取。 我已经运行了代码,它可以完美运行,但是我试图理解使用文件描述符和包含参数的缓冲区的逻辑。 请从行r = read(fd,buff,1);中获取帮助;

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>


void main()
{
 int fd,r;
 char buff[100];
 fd=open("test.dat",O_RDONLY);
 if (fd==-1)
 {
    printf("Failed to open and read the file test.dat\n");
    exit(1);
 }
    r=read(fd,buff,1);

    while (r>0)
    {
        printf("%s",buff);
        r=read(fd,buff,1);

    }

close (fd);

}

基本上, read返回读取的字节数。 在您的代码中,您每次读取1个字节并进行打印。 因此,当到达文件末尾时,它将停止( read将返回0)。

您可以在一次read读取更多字节。 在这种情况下, read可以返回两个值(当然,如果read成功):

  1. 您请求的read(fd, buff, 12)字节数( read(fd, buff, 12)将返回12)
  2. 如果要读取的字节数少于您请求的字节数(假设您请求的字节数为100,但文件包含40个字符),它将返回从文件读取的字节数,而不是您请求的字节数(即,它将返回40,而不是100)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM