缓冲方式、文件描述符及文件操作

来源:互联网 发布:red hat linux的优点 编辑:程序博客网 时间:2024/05/22 16:42
**********************************************************************************************************************************************
三种缓冲方式:
进程退出时,要刷新缓冲区以清空缓冲区 ,这时就相当于修改缓冲区,这时父子进程会各有一份缓冲区里的数据(拷贝的),当把标准输出重定向到一个文件里,缓冲区里的数据的刷新方式会变为全缓冲。
标C库函数自带缓冲区 ,常见的三种缓冲方式
(1)行缓冲:遇到"\n",就会刷新缓冲区
(2)全缓冲:把缓冲区写满,再进行刷新缓冲区
(3)无缓冲:系统调用函数无缓冲区(如:write)
系统调用与库函数有层级的差别:系统调用在库函数的下面,系统调用是操作系统暴露出来的,库函数是提供给开发者的。
**********************************************************************************************************************************************
清空文件的指令,如清空文件 log:
#>log
#echo ""log(清了一个空行进去)
一、打开文件/关闭文件

参数:patrhname->要打开的文件的路径 flag->打开方式   mode->权限(新创建的)
返回值:成功返回一个新的文件描述符(未使用的最小整数),失败返回-1;
O_CREAT|O_RDWD:如果该文件不存在,就创建该文件,方式为可读可写;

fd->要关闭的文件的描述符
返回值:成功0,失败返回-1;

二、对文件执行写操作
 
fd->往这个文件写, buf->写什么,count->写多少

三、对文件执行读操作

参数:fd->open的文件,从这个文件里读,  buf->读到哪儿, count->读多少
返回值:ret > 0表示实际读了多少,ret==0表示读到了文件结尾,ret==-1表示读取失败。
一般情况下,是期望把缓冲区buf读满,所以一般 count = sizeof(buf)-1;
但当 ret >0时,实际上并未把 buf 读满,所以要有 buf[ret]='\0';(好习惯)

**********************************************************************************************************************************************
C语言的三个标准输入/输出流,类型为文件指针 FILE*:
标准输入(stdin ),标准输出(stdout)、标准错误(stderror)
一个进程一旦被创建,会默认打开这三个文件,但你也可以关掉它们。对应的文件描述符:0、1、2;
文件重定向的本质:是在改变文件描述符所对应的文件指针
0 0
原创粉丝点击