`
luozhonghua2014
  • 浏览: 62690 次
文章分类
社区版块
存档分类
最新评论

linux c 文件 read(读) 和 write (写) 代码分析

 
阅读更多

read code:


[root@luozhonghua 03]# cat ex03-read-01.c

/*文件ex03-open-03.c,
O_CREAT和O_EXCL的使用*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>


int main(void)
{
int fd = -1,i;
ssize_t size = -1;
/*存放数据的缓冲区*/
char buf[10];
char filename[] = "test.txt";
/*打开文件,如果文件不存在,则报错*/
fd = open(filename,O_RDONLY);
if(-1 == fd){
/*文件已经存在*/
printf("Open file %s failure,fd:%d\n",filename,fd);
} else {
/*文件不存在,创建并打开*/
printf("Open file %s success,fd:%d\n",filename,fd);
}


/*循环读取数据,直到文件末尾或者出错*/
while(size){
/*每次读取10个字节数据*/
size = read(fd, buf,10);
if( -1 == size) {
/*读取数据出错*/
close(fd);/*关闭文件*/
printf("read file error occurs\n");
/*返回*/
return -1;
}else{
/*读取数据成功*/
if(size >0 ){
/*获得size个字节数据*/
printf("read %d bytes:",size);
/*打印引号*/
printf("\"");
/*将读取的数据打印出来*/
for(i = 0;i<size;i++){
printf("%c",*(buf+i));
}
/*打印引号并换行*/
printf("\"\n");
}else{
printf("reach the end of file\n");
}
}
}


return 0;

}


[root@luozhonghua 03]# ./ex03-read-01
Open file test.txt success,fd:3
read 10 bytes:"aaaaaaaaaa"
read 10 bytes:"aaaaaaaaaa"
read 10 bytes:"aaaaaaaaaa"
read 5 bytes:"aaaa
"
reach the end of file


-----write


[root@luozhonghua 03]# cat ex03-write-01.c
/*文件ex03-write-01.c,
O_CREAT和O_EXCL的使用*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>


int main(void)
{
int fd = -1,i;
ssize_t size = -1;
int input = 0;
/*存放数据的缓冲区*/
char buf[]="quick brown fox jumps over the lazy dog";
char filename[] = "test.txt";
/*打开文件,如果文件不存在,则报错*/
fd = open(filename,O_RDWR|O_TRUNC);
if(-1 == fd){
/*文件已经存在*/
printf("Open file %s failure,fd:%d\n",filename,fd);
} else {
/*文件不存在,创建并打开*/
printf("Open file %s success,fd:%d\n",filename,fd);
}


/*将数据写入到文件test.txt中*/
size = write(fd, buf,strlen(buf));
printf("write %d bytes to file %s\n",size,filename);
/*关闭文件*/
close(fd);


return 0;
}
[root@luozhonghua 03]# cat text.txt
cat: text.txt: No such file or directory
[root@luozhonghua 03]# cat test.txt
quick brown fox jumps over the lazy dog








分享到:
评论

相关推荐

    Linux C大文件的创建和读写速率

    在Linux环境中,C语言是进行系统级编程和高效文件操作的首选工具。当我们处理超过2GB的大文件时,需要特别关注内存管理、I/O效率以及系统调用的使用。本篇将详细介绍如何在Linux下使用C语言创建和读写大文件,并探讨...

    Linux C语言的配置文件操作库

    在Linux系统中,C语言作为底层编程的主要工具,其对配置文件的操作往往涉及到繁琐的文件I/O操作。然而,为了简化这一过程,开发者通常会利用特定的库来处理配置文件,比如读取、写入、解析键值对等。本文将深入探讨...

    Linux下C语言实现文件拷贝

    权限设置为 `S_IRUSR | S_IWUSR` 表示文件所有者可读可写。如果打开失败,同样打印错误信息并退出程序。 ##### 6. 文件拷贝循环 ```c while ((bytes_read = read(from_fd, buffer, BUFFER_SIZE))) { //... } ``` ...

    用C语言写的linux串口读写源代码com serial,适用于arm和各种linux系统

    本文将深入探讨标题和描述中提及的C语言编写的Linux串口读写源代码,以及其在ARM处理器和各类Linux系统中的应用。 首先,串口通信是一种点对点的数据传输方式,它通过串行数据线进行通信,通常用于设备调试、数据...

    Linux下C语言_文件操作

    Linux下C语言的文件操作与标准C库中的fopen()、fclose()、fread()、fwrite()等函数不同,open()、close()、read()、write()属于系统级调用,它们提供对文件的操作能力,而标准C库函数则是基于这些系统调用之上的封装...

    Linux内核中读写文件数据的方法

    类似地,`vfs_write()`用于向文件写入数据,其参数与`vfs_read()`类似,只是写入的缓冲区是`const char __user*`类型。同样,需要通过`set_fs()`函数确保能正确处理内核空间的地址。 4. **关闭文件**: 当读写...

    linux常用的C函数open,write、read

    Linux 操作系统中,open、write 和 read 是三个基本的 C 函数,用于处理文件输入/输出操作。在本文中,我们将详细介绍这三个函数的用法、参数、返回值、错误代码等。 open 函数 open 函数用于打开一个文件,以便...

    C语言课程设计仿Linux的文件管理系统

    利用c语言实现仿Linux的文件操作,包括: format-格式化; exit-安全退出·文件系统,保存信息; mkdir dirname :创建子目录; rmdir dirname :删除子目录. ls dirname :显示当前目录下信息. cd dirname :更改当前...

    Linux下的SFTP C语言客户端,包括SFTP下载、上传、list目录和创建目录

    在IT领域,尤其是在系统编程和网络通信中,C语言因其高效和灵活性而广泛用于实现各种功能,例如在Linux环境中创建SFTP(Secure File Transfer Protocol)客户端。SFTP是一种基于SSH的安全文件传输协议,用于在不安全...

    linux下实现高性能读写锁(read/write lock)

    在给定的文件"rwlock.cpp"和"rwlock.h"中,我们可以看到一个实现了Windows的slim read/write lock算法的Linux版本。下面将详细讲解读写锁的工作原理、特性以及如何在Linux下实现。 首先,了解读写锁的基本概念: 1...

    linux下C语言实现https请求源码

    在`main.c`文件中,实现HTTPS请求的C语言代码可能包含以下步骤: 1. **初始化OpenSSL库**:调用`SSL_library_init()`和`SSL_load_error_strings()`进行初始化。 2. **创建SSL上下文**:使用`SSL_CTX_new()`创建一...

    Linux Windows C++读写ini文件

    这种轻量级的文件格式易于阅读和修改,同时兼容多种操作系统,包括Windows和Linux。C++作为一门强大的系统级编程语言,自然支持对ini文件的读写操作。下面我们将详细介绍在Linux和Windows环境下,如何使用C++来处理...

    linux_c.rar c语言 源代码

    通过分析和学习这个名为"linux_c.c"的源代码,我们可以更深入地理解Linux环境下的C语言编程,包括如何使用系统调用,如何编写驱动,以及如何处理文件和进程等。这样的实践将有助于提升我们的系统编程技能,从而在...

    LINUX下的eeprom读写测试程序

    在Linux操作系统中,EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,常用于存储设备配置信息或系统参数。本文将深入探讨如何在Linux环境下进行EEPROM的读写测试,以及如何...

    linux c语言示例代码

    通过阅读、分析和运行这些示例代码,学习者不仅能掌握C语言的基本语法,还能深入理解Linux环境下的编程实践,提升解决实际问题的能力。这是一条从理论到实践的学习路径,有助于成长为一名熟练的Linux系统开发者。

    linux ext2 文件系统模拟 c语言实现

    6. **代码实践**:提供的`sim_ext2_fs`可能是实现EXT2文件系统模拟的源代码,可以通过阅读和分析这些代码来深入了解EXT2的内部工作原理以及C语言如何用于实现文件系统。 通过这个项目,开发者不仅可以深化对EXT2...

    Linux程序员——C语言源代码

    在Linux中,还可以使用`unistd.h`库的`read`和`write`函数直接与标准输入输出流交互。 2. **文件操作**:C语言通过`fopen`、`fclose`、`fread`、`fwrite`等函数进行文件操作。在Linux中,这些函数可以与文件系统...

    linux,c语言文件系统

    ### Linux C语言文件系统操作详解 #### 知识点一:使用`read()`与`write()`进行文件复制 在Linux环境中,对文件进行操作时,经常需要用到系统调用来完成特定的任务,例如通过`read()`与`write()`函数来实现文件的...

    Linux系统设备文件读写_linux系统中设备文件读写_

    在描述中提到的`app-read.c`和`app-write.c`可能是两个示例程序,分别演示了如何读取和写入设备文件。在C语言中,可以使用标准I/O库函数(如`fopen`, `fread`, `fwrite`, `fclose`等)或低级I/O系统调用(如`open`, ...

    精通LinuxC编程源代码

    在“精通Linux C编程源代码”这个主题...在提供的“精通Linux C编程源代码”压缩包中,可能包含这些概念的实际应用示例和项目代码,读者可以通过阅读和分析这些源代码,加深对Linux C编程的理解,并提升实际编程技能。

Global site tag (gtag.js) - Google Analytics