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 <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 }
时间: 2024-11-05 18:43:14

Linux一个简单的读写文件的相关文章

linux shell 之终端读写文件数据流和重定向&gt;,&lt;,&lt;&lt;,&gt;&gt;

终端实现文件中数据流的读写: 重定向命令列表如下: 命令 说明 command > file 将输出重定向到 file.将终端数据写到文件file中 command < file 将输入重定向到 file.将文件 command >> file 将输出以追加的方式重定向到 file. n > file 将文件描述符为 n 的文件重定向到 file. n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file. n >& m 将输出文

python中一个函数实现读写文件、判断价格正确常用函数

# 写一个函数,有2个功能,能读文件,也能写文件 # 读文件,只需要传文件名 # 写文件,需要传文件名,写入的内容 import json def op_file(file, content=None): if content: with open(file, 'w', encoding='utf-8') as fw: json.dump(content, fw) else: with open(file, encoding='utf-8') as fw: result = json.load(

一个简单的Java文件工具类

1 package com.xyworkroom.ntko.util; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 10 import javax.servlet.htt

一个简单的.vimrc文件

我自己常用的.vimrc配置,很简单,够用即可. syntax enable "显示行号 set nu set showcmd "光标所在那行划线 set cursorline set wildmenu set showmatch set hlsearch "代码折叠set foldenable set foldlevelstart=0 "set foldnestmax=10 nnoremap <space> za set foldmethod=inde

PHP 简单的读写文件

<?php class gfile{ private $path; private $fp; function __construct(String $filepath){ if(isset($filepath)){ if(file_exists($filepath)){ $this->path = $filepath; }else{ throw new Exception("undefind path", 1); } }else{ throw new Exception(

Android 如何在linux kernel 中读写文件

前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 [Description] 如何在linux kernel 中读写文件 [Keyword] linux kernel read write file 读写文件 [Solution] 通常我们只会在linux native/app 层 读写文件,但可能有一些非常特别的情况下,我们需要直接在

Android 怎样在linux kernel 中读写文件

前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 [Description] 怎样在linux kernel 中读写文件 [Keyword] linux kernel read write file 读写文件 [Solution] 通常我们仅仅会在linux native/app 层 读写文件,但可能有一些很特别的情况下,我们须要直接在

编写一个通用的Makefile文件

1.1在这之前,我们需要了解程序的编译过程 a.预处理:检查语法错误,展开宏,包含头文件等 b.编译:*.c-->*.S c.汇编:*.S-->*.o d.链接:.o +库文件=*.exe 1.2体验在VC下程序的编译 a.先编译,在链接 b.修改了哪个文件,就单独编译此文件,在链接 c.修改了哪个头文件,就单独编译使用该头文件的源文件,在链接 1.3在linux下实现上述要求 2.编写一个测试的Makefile 2.1直接编译链接 1 gcc -o test a.c b.c 缺点:改变其中一

【LINUX网络编程】Makefile文件

<Linux网络编程>(第二版) 第2章的一些读书笔记 ↓ Makefile:在一个含有较多文件的工程中,定义一系列规则来指定编译文件的顺序,可用于管理工程. Makefile指定了工程中的哪些源文件需要编译以及如何编译.需要创建那些库文件以及如何创建这些库文件.如何最后产生我们想要的可执行文件.为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令,整个工程就完全自动编译. 首先来看一下Linux