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

read code:

[[email protected] 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;

}

[[email protected] 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

[[email protected] 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;

}

[[email protected] 03]# cat text.txt

cat: text.txt: No such file or directory

[[email protected] 03]# cat test.txt

quick brown fox jumps over the lazy dog

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

时间: 2024-11-05 06:35:11

linux c 文件 read(读) 和 write (写) 代码分析的相关文章

《linux 内核完全剖析》 keyboard.S 部分代码分析(key_map)

keyboard.S 部分代码分析(key_map) keyboard中间有这么一段,我一开始没看明白,究竟啥意思 key_map: .byte 0,27 .ascii "1234567890-=" .byte 127,9 .ascii "qwertyuiop[]" .byte 13,0 .ascii "asdfghjkl;'" .byte '`,0 .ascii "\\zxcvbnm,./" .byte 0,'*,0,32

Linux -- 内存控制之oom killer机制及代码分析

近期,线上一些内存占用比較敏感的应用.在訪问峰值的时候,偶尔会被kill掉,导致服务重新启动.发现是Linux的out-of-memory kiiler的机制触发的. http://linux-mm.org/OOM_Killer oom kiiler会在内存紧张的时候,会依次kill内存占用较高的进程,发送Signal 15(SIGTERM).并在/var/log/message中进行记录.里面会记录一些如pid,process name.cpu mask,trace等信息,通过监控能够发现类似

Linux时间子系统(十七) ARM generic timer驱动代码分析

一.前言 关注ARM平台上timer driver(clocksource chip driver和clockevent chip driver)的驱动工程师应该会注意到timer硬件的演化过程.在单核时代,各个SOC vendor厂商购买ARM core的IP,然后自己设计SOC上的peripherals,这里面就包括了timer的硬件.由于没有统一的标准,各个厂商的设计各不相同,这给驱动工程师带来了工作量.然而,如果仅仅是工作量的话就还好,实际上,不仅仅如此.linux的时间子系统要求硬件t

从Matlab文件中读取mxArray类型变量-部分代码分析

这是我做的笔记,看到这个代码时觉得处理有点妙,做笔记记录之. 部分源代码: .... int main(int argc,char** argv) { char name[_FILE_NAME_LEN]; int num=0; int nFlag1,nFlag2; printf("请输入要读取的文件名称(*.mat):"); scanf("%s",name); while ((name[num++] != '\0') && (num<=_FIL

Linux内核的文件预读readahead

Linux的文件预读readahead,指Linux系统内核将指定文件的某区域预读进页缓存起来,便于接下来对该区域进行读取时,不会因缺页(page fault)而阻塞.因为从内存读取比从磁盘读取要快很多.预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一. 维基百科上关于readhead的介绍资料: readahead is a system call of the Linux kernel that loads a file's content

菜鸟学Linux - 设置文件/文件夹的权限

在Linux中,我们可以对文件或文件夹设置权限(r,w,x,-).然而,对文件和文件夹的权限设置,具有不同的意义.下面,通过几个例子来了解一下权限的意义所在.在开始之前,我们需要了解几个修改权限的命令: 备注:在测试环境中,通过两组用户名/用户组来演示.这两组分别为:root/root,Jonathan/Jonathan.此外,下面的例子都是连续的,也就是当前的例子是基于前面的例子. chgrp - change group,用于修改文件/文件夹的用户组. 现在,/home/Jonathan/J

后台开发:核心技术与应用实践(边写代码边读书才是最好的学习方式)

写下这些文字的时候是我在腾讯工作的第五个年头,这五年让我对效率有了更深刻的认识.还是一个学生的时候,和大家一样,我也曾一字不落地读过<UNIX环境高级编程>,<UNIX环境网络编程>一二三卷,<TCP/IP详解>一二三卷,<C++ Primer>等书籍,这些都是非常经典的开发书籍.它们的共同特点是大而全,不漏掉任何一个知识点,并且每个知识点都讲得非常详细.但在实际的开发工作中,可能用到的知识点只有20%,其他的80%则很少用到.这也是我写这本书的初衷:用最短

Linux中文件的可读,可写,可执行权限的解读以及chmod,chown,chgrp命令的用法

一.文件权限解读 如上图所示,开头的-rwxrw-r--这一字符串标识文件权限. 这个字符串有10位,可以分为4段来解读.注:r--可读,w--可写,x--可执行. 第一段(第1位)表示是目录还是文件,-表示是文件,d表示是目录: 第二段(第2-4位,共3个字符串)表示文件所属用户对它的权限: 第三段(第5-7位,共3个字符串)表示文件所属用户组用户对它的权限: 第四段(第8-10位,共3个字符串)表示其他用户对它的权限: 注:我们用3位8进制来表示文件的权限,r用4标识,w用2标识,x用1标识

【转】Linux中文件的可读,可写,可执行权限的解读以及chmod,chown,chgrp命令的用法

chmod是更改文件的权限 chown是改改文件的属主与属组 chgrp只是更改文件的属组. 一.文件权限解读 如上图所示,开头的-rwxrw-r--这一字符串标识文件权限. 这个字符串有10位,可以分为4段来解读.注:r--可读,w--可写,x--可执行. 第一段(第1位)表示是目录还是文件,-表示是文件,d表示是目录: 第二段(第2-4位,共3个字符串)表示文件所属用户对它的权限: 第三段(第5-7位,共3个字符串)表示文件所属用户组用户对它的权限: 第四段(第8-10位,共3个字符串)表示