小标
2018-12-07
来源 :
阅读 1195
评论 0
摘要:本文主要向大家介绍了Linux运维知识之Linux一个简单的读写文件,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。
本文主要向大家介绍了Linux运维知识之Linux一个简单的读写文件,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。
(1)linux中的文件描述符fd的合法范围是0或者一个正正数,不可能是一个负数。
(2)open返回的fd程序必须记录好,以后向这个文件的所有操作都要靠这个fd去对应这个文件,最后关闭文件时也需要fd去指定关闭这个文件。如果在我们关闭文件前fd丢掉了那就惨了,这个文件没法关闭了也没法读写了。
提醒:实时查man手册
(1)当我们写应用程序时,很多API原型都不可能记得,所以要实时查询,用man手册
(2)man 1 xx查linux shell命令,man 2 xxx查API, man 3 xxx查库函数
读取文件内容
(1)ssize_t read(int fd, void *buf, size_t count);
fd表示要读取哪个文件,fd一般由前面的open返回得到 buf是应用程序自己提供的一段内存缓冲区,用来存储读出的内容 ,count是我们要读取的字节数 返回值size_t类型是linux内核用typedef重定义的一个类型(其实就是int),返回值表示成功读取的字节数。
向文件中写入
(1)写入用write系统调用,write的原型和理解方法和read相似
(2)注意buf的指针类型为void
(3)刚才先写入12字节,然后读出结果读出是0(但是读出成功了)。
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
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 }
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号