b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

分区时c盘符没有 基础IO学习笔记(open等系统调用、inode、文件理解)

电脑杂谈  发布时间:2018-10-22 03:28:42  来源:网络整理

在这里插入图片描述

参数解析:

pathname:要打开或要创建的目标文件

flags:下面的一个或多个常量进行"或"运算

O_RDONLY 只读
O_WRONLY 只写
O_RDWR   读写打开
O_CRWAT  文件不存在创建它
O_APPEND 追加写

返回值:成功返回新打开的文件描述符,失败返回-1

在这里插入图片描述

参数说明:

fd为要关闭文件的文件描述符

返回值: 关闭成功返回0,关闭失败返回-1

在这里插入图片描述

使用:

int main()
{
 int fd = open("myfile", O_RDONLY);
 if (fd<0){
  perror("use open");
  exit(1);
 }
 char buf[1024];
 const char *msg = "hello\n";
 while (1){
  ssize_t s = read(fd, buf, strlen(msg));
  if (s>0){
   buf[s] = 0;
   printf("%s", buf);
  }
  else{
   break;
  }
 }
 close(fd);
 return 0;
}

在这里插入图片描述

使用:

 int main()
 {
  int fd = open("myfile", O_WRONLY | O_CREAT, 0664);
  if (fd <= 0){
   perror("use open");
   exit(1);
  }
  const char* msg = "hello,xikeda\n";
  int count = 5;
  while (count--){
   write(fd, msg, strlen(msg));
  }
  close(fd);
  return 0;
 }

open函数的返回值就是文件描述符,文件描述符就是一个小的整数

Linux系统默认会有3个缺省打开的文件描述符,分别是标准输入0、标准输出1、标准错误2。

0、1、2分别对应的物理设备是:键盘、显示器、显示器、

在这里插入图片描述

当我们打开文件时,操作系统在内存中要创建相应的数据结构来描述目标文件,file_struct就是这个数据结构,进程执行open系统调用,必须让进程和文件关联起来。每个进程都有一个file*指针,指向一张表file_struct,该表包括一个指针数组,每个元素都是一个指向打开文件的指针。本质上,文件描述符就是该数组的下标

在file_struct数组中,找到当前没有被使用的最小的一个下标,作为新的文件描述符

a.输出重定向>

b.输入重定向<

c.追加重定向>>

把本来要输出到显示屏的消息输出到文件

在这里插入图片描述

我们可以把1号描述符对于的文件(标准输出)关了,在打开一个文件,分配的文件描述符必然是1,这样就可以达到把本来要输到显示屏的消息打印到文件中

因为IO相关函数与系统调用接口对应,并且库函数封装系统调用。所以,本质上,访问文件是通过fd访问的

所以c库当中的FILE结构体内部,必定封装了fd。

printf和fwrintf库函数自带缓冲区,write系统调用接口没有缓冲区,说明缓冲区是C库提供的

缓冲区分为三种:

a.无缓冲

b.行缓冲(按行刷新)

c.全缓冲(缓冲区写满才刷新)

显示器一般是行缓冲,而普通文件是全缓冲

inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的源信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件源信息的区域就叫做inode,中文译名为”索引节点”。每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-89585-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...