簡體   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