• Linux一个简单的读写文件


     1 fd是个啥

    (1)linux中的文件描述符fd的合法范围是0或者一个正正数,不可能是一个负数。

    (2)open返回的fd程序必须记录好,以后向这个文件的所有操作都要靠这个fd去对应这个文件,最后关闭文件时也需要fd去指定关闭这个文件。如果在我们关闭文件前fd丢掉了那就惨了,这个文件没法关闭了也没法读写了。

    2 学会实时查man手册

    (1)当我们写应用程序时,很多API原型都不可能记得,所以要实时查询,用man手册

    (2)man 1 xx查linux shell命令,man 2 xxx查API, man 3 xxx查库函数

    3 读取文件内容

    (1)ssize_t read(int fd, void *buf, size_t count);

    fd表示要读取哪个文件,fd一般由前面的open返回得到 buf是应用程序自己提供的一段内存缓冲区,用来存储读出的内容 ,count是我们要读取的字节数 返回值size_t类型是linux内核用typedef重定义的一个类型(其实就是int),返回值表示成功读取的字节数。

    4 向文件中写入

    (1)写入用write系统调用,write的原型和理解方法和read相似

    (2)注意buf的指针类型为void

    (3)刚才先写入12字节,然后读出结果读出是0(但是读出成功了)。

     1 #include <stdio.h>
     2 #include <sys/types.h>
     3 #include <sys/stat.h>
     4 #include <fcntl.h>
     5 #include <unistd.h>
     6 #include <string.h>
     7 
     8 
     9 
    10 int main(int argc, char *argv[])
    11 {
    12     int fd = -1;        // fd 就是file descriptor,文件描述符
    13     char buf[100] = {0};
    14     char writebuf[20] = "l love linux";
    15     int ret = -1;
    16     
    17     // 第一步:打开文件
    18     fd = open("a.txt", O_RDWR);//注意之前自己定义个a.txt
    19     if (-1 == fd)        // 有时候也写成: (fd < 0)
    20     {
    21         printf("文件打开错误
    ");
    22     }
    23     else
    24     {
    25         printf("文件打开成功,fd = %d.
    ", fd);
    26     }
    27     
    28     // 第二步:读写文件
    29     // 写文件
    30     ret = write(fd, writebuf, strlen(writebuf));
    31     if (ret < 0)
    32     {
    33         printf("write失败.
    ");
    34     }
    35     else
    36     {
    37         printf("write成功,写入了%d个字符
    ", ret);
    38     }
    39 /*    
    40     // 读文件
    41     ret = read(fd, buf, 5);
    42     if (ret < 0)
    43     {
    44         printf("read失败
    ");
    45     }
    46     else
    47     {
    48         printf("实际读取了%d字节.
    ", ret);
    49         printf("文件内容是:[%s].
    ", buf);
    50     }
    51 */    
    52     // 第三步:关闭文件
    53     close(fd);
    54     
    55     return 0;
    56 }
  • 相关阅读:
    touch
    ls
    Linux基础
    errors
    strconv
    strings
    fmt
    os/exec
    笔记本连不上网怎么办
    笔记本连不上网怎么办
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/6053497.html
Copyright © 2020-2023  润新知