文件编程
Linux中文件的作用
文件IO:一切皆文件!(VFS 虚拟文件管理系统 以此来实现的)-普通文件,d目录文件,c/b设备文件,l链接文件(p管道文件,s套接字(共享文件),f堆栈文件)
为什么要用文件来管理一切?
1、由于要存储大量文件,但如何对这些文件实施有效的管理呢?—文件系统(管理文件的软件,把文件分类管理)
2、Linux根目录简介—根文件系统(根目录)-----bin(普通用户)sbin(管理员)dev(设备文件)etc(配置文件)lib(系统运行的库)usr/lib usr/include usr/sbin usr/bin、home(普通用户)、root(超级用户)、boot、proc、sys
操作普通文件:C库函数(相当于中间件)/API(系统调用)
操作c/b设备文件:fread fwrite
pwd:在Linux层次结构中,想要知道当前所处的目录,可以用pwd命令,该命令显示整个路径名。
用户空间:fopen
C库:实现fopen()
{
API;(用户编程接口)
}
内核空间:访问文件
文件IO:初级IO(系统调用API
文件),标准IO(库函数),高级IO(文件的高级操作,高级API)
文件IO的重要性
文件描述符
文件ID
动态分配:只要当操作这个文件时,系统才会给你分配文件描述符。关闭就收回。
非负整数:1、从编号3开始 2、0,1,2三个文件秒负数有其他作用
无缓冲访问文件(系统调用)
creat
open:C库(可以跨平台)提供的
write:内核提供的
read
lseek
close
经典文件操作–文件拷贝
0/1/2这三个文件描述符
fcntl
loctl
作业
在一个文件里面写东西,再把其内容打印出来。
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
if((fp=fopen("1.txt","w"))==NULL)
{
printf("error");
exit(0);
}
char ch;
ch=getchar();
while(ch!='\n')
{
fputc(ch,fp);
ch=getchar();
}
fclose(fp);
fp=fopen("1.txt","r");
ch=fgetc(fp);
while(!feof(fp))
{
printf("%c",ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
return 0;
}