您的位置:首页 > 运维架构 > Linux

LINUX期末复习---文件处理

2009-12-26 21:54 225 查看

一、LINUX文件结构

①文件
  为操作系统服务、设备访问提供了简单而统一的接口。文件数据结构包括文件名字、创建日期、访问权、文件长度等,这些数据都保存在我们称之为 节点 中。
②设备
  硬件在LINUX/UNIX中通常是被映射成文件的,这在嵌入式当中是十分重要的。
  几个重要的设备文件:
  one: /dev/console 代表的是系统控制台。
  two: /dev/tty 是进程控制终端。
  three: /dev/null 空设备。
③目录
  一种保存节点号和其他文件名字的特殊文件,通常只能拖过opendir 和 readdir来操作。

二、系统调用

定义:对文件和设备进行访问和控制的函数调用被称为系统调用,它有LINUX直接提供,是通向操作系统本身的操作接口。
不足:系统调用会降低计算机的执行性能。因为用户空间和内核空间处于不同的空间,系统调用会在用户程序和内核代码之间来回切换,系统开销很大。一般由库函数来间接调用。
①open



举例:file = open("stu.info ", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
说明: O_RDWR:以读写方式打开文件。
         O_CREAT:按mode中给的访问模式创建文件。
          S_IRUSR:文件的属主用户有读权限
          S_IWUSR:文件的属主用户有写权限
②close
举例:close(具体的文件描述符);
③read



举例1:
char bud[20];
printf(“The value read returned %d ./n”,res=read(0,buf,20));//标准输入
buf[res]=’/0’;
printf(“%s”,buf);
举例2:
typedef struct
{
char stu_num[12];
char name[10];
short int sex;//for 0 is female ,1 is male
char mobile_phone[12];
} stu_info;
read(file,&record,sizeof(record));
④write


 
举例1:
if(write(1,”hellloworld/n”,sizeof(“hellloworld/n”)) != sizeof(“hellloworld/n”))
    printf(“Error!”);//标准输出
举例2:
write(file,&record,sizeof(record));
⑤ioctl(嵌入式LINUX对设备的配置)



⑥lseek



⑦目录相关函数



说明:
lstat:获取一些文件相关的信息
readdir:注意它的返回值,需要定义结构体,struct dirent *pDirent
vStat.st_mode:它的使用需要配上特定的宏,作用是文件权限和文件类型信息

三、库函数

①文件操作举例









②内存映射
f = open("records.dat",O_RDWR);
mapped = (RECORD *)mmap(0, NRECORDS*sizeof(record), //映射进内存
         PROT_READ|PROT_WRITE, MAP_SHARED, f, 0);
mapped[43].integer = 243;
sprintf(mapped[43].string,"RECORD-%d",mapped[43].integer);
msync((void *)mapped, NRECORDS*sizeof(record), MS_ASYNC);//映射文件写入磁盘
munmap((void *)mapped, NRECORDS*sizeof(record));// 调用
munmap
解除映射
close(f);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息