欢迎来到贱贱的博客

扩大
缩小

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("文件打开错误\n");
22     }
23     else
24     {
25         printf("文件打开成功,fd = %d.\n", fd);
26     }
27     
28     // 第二步:读写文件
29     // 写文件
30     ret = write(fd, writebuf, strlen(writebuf));
31     if (ret < 0)
32     {
33         printf("write失败.\n");
34     }
35     else
36     {
37         printf("write成功,写入了%d个字符\n", ret);
38     }
39 /*    
40     // 读文件
41     ret = read(fd, buf, 5);
42     if (ret < 0)
43     {
44         printf("read失败\n");
45     }
46     else
47     {
48         printf("实际读取了%d字节.\n", ret);
49         printf("文件内容是:[%s].\n", buf);
50     }
51 */    
52     // 第三步:关闭文件
53     close(fd);
54     
55     return 0;
56 }
复制代码

 

posted on   L的存在  阅读(29323)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

目录导航