本文由文件IO相关操作的一些操作,进一步详解了文件描述符fd,重定向,FILE结构体。
目录
一、C语言中的文件I/O操作
首先来回顾一下C语言中的文件I/O操作[C/C++]C语言中对文件的操作方法_RMA515T的博客-优快云博客
之前的博客中就有详细的介绍。这里就只做简单演示。
#include <stdio.h>
int main()
{
FILE *fp = fopen("zht2", "w+");
if(!fp)
{
printf("erroe");
return 1;
}
int count = 5;
while(count--)
{
fwrite("hello\n", 6, 1, fp);
}
fseek(fp, 0, SEEK_SET);
char buf[1024];
while(1)
{
ssize_t s = fread(buf, 1, 7, fp);
if(s > 0)
{
buf[s] = 0;
printf("%s", buf);
}
if(feof(fp))
{
break;
}
}
fclose(fp);
return 0;
}
C默认会打开三个输入输出流,分别是stdin, stdout, stderr,这三个流的类型都是FILE*, fopen返回值类型,文件指针。
文件的打开方式:
“r”(只读):为了输入数据,打开一个已经存在的文本。如果文件不存在则文件出错。
“w”(只写): 为了输出数据,打开一个文本文件。如果文件不存在则建立一个新的文件。
“a”(追加):向文本文件尾添加数据。如果文件不存在则出错。
“rb”(只读): 为了输入数据,打开一个二进制文件。如果文件不存在则出错。
“wb”(只写) : 为了输出数据,打开一个二进制文件。如果文件不存在则建立一个新的文件。
“ab”(追加): 向一个二进制文件尾添加数据。如果文件不存在则出错。
“r+”(读写): 为了读和写,打开一个文本文件。如果文件不存在则出错。
“w+”(读写): 为了读和写,建议一个新的文件。如果文件不存在则建立一个新的文件。
“a+”(读写): 打开一个文件,在文件尾进行读写。如果文件不存在则建立一个新的文件。
“rb+”(读写):为了读和写打开一个二进制文件。如果文件不存在则出错。
“wb+”(读写): 读和写,新建一个新的二进制文件。如果文件不存在则建立一个新的文件。
“ab+”(读写): 打开一个二进制文件,在文件尾读写。文件不存在则写建立一个新的文件。
二、系统文件I/O
除了上述C接口操作文件,,我们还可以采用系统接口来进行文件访问,
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h&g