当前位置: 首页 > news >正文

自己做剧本网站网站推广要点

自己做剧本网站,网站推广要点,wordpress 域名设置,企业发展历程网站文件系统和基础IO 基础IOc语言基础IO函数当前路径和标准流系统IO系统调用函数重定向FILE文件结构体 在谈缓存区问题理解文件系统初识inode 基础IO c语言基础IO函数 打开与关闭 FILE *fopen(char *filename, const char *mode);选项还可以是 r/w/a 意味着为可读可写打开。 2…

文件系统和基础IO

  • 基础IO
    • c语言基础IO函数
    • 当前路径和标准流
    • 系统IO
    • 系统调用函数
    • 重定向
    • FILE文件结构体
  • 在谈缓存区问题
  • 理解文件系统
    • 初识inode

基础IO

c语言基础IO函数

  1. 打开与关闭
FILE *fopen(char *filename, const char *mode);

在这里插入图片描述
选项还可以是 r/w/a+ 意味着为可读可写打开。
在这里插入图片描述
2. 写入和读取
(1) 字符的写入和读取

int fputc( int c, FILE *stream );
int fgetc( FILE *stream );

在这里插入图片描述
在这里插入图片描述
格式化输出和格式化输入
在这里插入图片描述
文件是否错误:
在这里插入图片描述

当前路径和标准流

所有的文件操作函数生成的文件都在当前路径,这个当前路径其实就是工作目录。工作目录查看方法:在这里插入图片描述
proc文件夹中。
标准流:

extern FILE *stdin;//标准输入流
extern FILE *stdout;//标准输出流
extern FILE *stderr;//标准错误流

当我们运行c语言时,默认打开三个流:其中,标准输入流对应的设备就是键盘,标准输出流和标准错误流对应的设备都是显示器。
stdin、stdout以及stderr是C标准库下的标准输入输出错误流,其他语言如C++也有对应的标准输入输出错误流:cin、cout和cerr。

系统IO

在这里插入图片描述
我们在前面学习了 Liunx中,用户不能直接访问操作系统。用户必须通过接口访问。接口既有普通函数接口,也有系统调用接口。c的库函数对不同操作系统的系统调用接口用相同的c语言接口进行封装,让c语言有了跨平台性。
介绍一个小知识点 :位图传参
基本原理:
在这里插入图片描述
在这里插入图片描述

#define ONE 1
#define TWO (1<<1)
#define THREE (1<<2)
#define FOUR (1<<3)
#define FIVE (1<<4)void Print(int flag)
{if(flag & ONE) printf("1\n");if(flag & TWO) printf("2\n");if(flag & THREE) printf("3\n");if(flag & FOUR) printf("4\n");if(flag & FIVE) printf("5\n");
}int main()
{Print(ONE);printf("----------------------\n");Print(TWO);printf("----------------------\n");Print(ONE|TWO);printf("----------------------\n");Print(THREE|FOUR|FIVE);printf("----------------------\n");Print(ONE|TWO|THREE|FOUR|FIVE);
}

系统调用函数

  1. open
int open(const char *pathname, int flags, mode_t mode);

open的第一个参数:文件名

  • 若pathname以路径的方式给出,则当需要创建该文件时,就在pathname路径下进行创建。

  • 若pathname以文件名的方式给出,则当需要创建该文件时,默认在当前路径下进行创建。(注意当前路径的含义)
    在这里插入图片描述
    例如:以只写的方式打开文件,当目标文件不存在时自动创建文件,则参数设置如下:

O_WRONLY | O_CREAT

参数 mode:
open函数的第三个参数是mode,表示创建文件的默认权限。
例如,将mode设置为0666,则文件创建出来的权限如下:

但实际上创建出来文件的权限值还会受到umask(文件默认掩码)的影响,实际创建出来文件的权限为:mode&(~umask)。umask的默认值一般为0002,当我们设置mode值为0666时实际创建出来文件的权限为0664。

文件描述符
open函数的返回值是新打开文件的文件描述符
在这里插入图片描述
那么问题来了 0 1 2去哪里了? 是事上0 1 2 正是我们的标准三流
实际上这里所谓的文件描述符本质上是一个指针数组的下标,指针数组当中的每一个指针都指向一个被打开文件的文件信息,通过对应文件的文件描述符就可以找到对应的文件信息。
close
系统接口中使用close函数关闭文件,close函数的函数原型如下:

int close(int fd);

使用close函数时传入需要关闭文件的文件描述符即可,若关闭文件成功则返回0,若关闭文件失败则返回-1。

write
系统接口中使用write函数向文件写入信息,write函数的函数原型如下:

size_t write(int fd, const void *buf, size_t count);

我们可以使用write函数,将buf位置开始向后count字节的数据写入文件描述符为fd的文件当中。

  • 如果数据写入成功,实际写入数据的字节个数被返回。
  • 如果数据写入失败,-1被返回。
    文件描述符fd
    我们在前面已经知道了文件描述符是open函数的返回值,就说文件描述符fd和被打开的文件有着千丝万缕的关系。
    在这里插入图片描述
    这个数组管理着所有被打开的文件。
    在这里插入图片描述

重定向

我们关闭 1 标准输出流 然后重新打开一个。写入到stdout在这里插入图片描述
我们试着写入stdout:结果也是一样。
在打开新接口时,会自动选用最小的接口作为新的函数接口。
dup2的函数调用
在这里插入图片描述
在这里插入图片描述
dup2通过更换文件描述符fd 达到了重定向的功能。

FILE文件结构体

FILE文件是c语言中掌管文件的一个结构体。接下来,我们看看他封装了什么:

typedef struct _IO_FILE FILE;struct _IO_FILE {int _flags;       /* High-order word is _IO_MAGIC; rest is flags. */
#define _IO_file_flags _flags//缓冲区相关/* The following pointers correspond to the C++ streambuf protocol. *//* Note:  Tk uses the _IO_read_ptr and _IO_read_end fields directly. */char* _IO_read_ptr;   /* Current read pointer */char* _IO_read_end;   /* End of get area. */char* _IO_read_base;  /* Start of putback+get area. */char* _IO_write_base; /* Start of put area. */char* _IO_write_ptr;  /* Current put pointer. */char* _IO_write_end;  /* End of put area. */char* _IO_buf_base;   /* Start of reserve area. */char* _IO_buf_end;    /* End of reserve area. *//* The following fields are used to support backing up and undo. */char *_IO_save_base; /* Pointer to start of non-current get area. */char *_IO_backup_base;  /* Pointer to first valid character of backup area */char *_IO_save_end; /* Pointer to end of non-current get area. */struct _IO_marker *_markers;struct _IO_FILE *_chain;int _fileno; //封装的文件描述符
#if 0int _blksize;
#elseint _flags2;
#endif_IO_off_t _old_offset; /* This used to be _offset but it's too small.  */#define __HAVE_COLUMN /* temporary *//* 1+column number of pbase(); 0 is unknown. */unsigned short _cur_column;signed char _vtable_offset;char _shortbuf[1];/*  char* _save_gptr;  char* _save_egptr; */_IO_lock_t *_lock;
#ifdef _IO_USE_OLD_IO_FILE
};

我们分别介绍重要部分:
在这里插入图片描述
这是c语言自带的文件缓存区。
在这里插入图片描述
这就是fd。找到这个之后,我们现在终于明白了,整个结构体就是为了封装fd。open函数在上层为用户申请FILE结构体变量,并返回该结构体的地址(FILE*),在底层通过系统接口open打开对应的文件,得到文件描述符fd,并把fd填充到FILE结构体当中的_fileno变量中,至此便完成了文件的打开操作。
而C语言当中的其他文件操作函数,比如fread、fwrite、fputs、fgets等,都是先根据我们传入的文件指针找到对应的FILE结构体,然后在FILE结构体当中找到文件描述符,最后通过文件描述符对文件进行的一系列操作。

在谈缓存区问题

缓存区在我们刚学之时就是一个很难理解的问题,现在我们写一段代码,再次探索缓存区。
在这里插入图片描述
我们把1号从stdout变成了fd,意味着fd会被写入3条指令。
神奇的是
在这里插入图片描述
接下来我们就探索这种神奇的现象:
输出的结果就不一样了,C语言函数fprintf和fwrite执行了两次,系统调用write执行了一次,为什么呢?

这就与『 语言层面』上的『 缓冲区』有关了。

首先,缓冲策略有以下几种:

  • 无缓冲。
  • 行缓冲。(常见的对显示器进行刷新数据)——遇到\n刷新
  • 全缓冲。(常见的对磁盘文件写入数据)——写满缓冲区才刷新
    在这里插入图片描述
    c语言自带的缓存区:凡是使用c语言的库函数调用的每个函数都会维护一个缓冲区,执行代码之后,因为文件是全缓冲则成这样:
    在这里插入图片描述
    在这里插入图片描述

理解文件系统

现在,我们在冲文件磁盘在看操作系统。

初识inode

  • 磁盘文件由两部分构成,分别是文件内容和文件属性。文件内容就是文件当中存储的数据,文件属性就是文件的一些基本信息,例如文件名、文件大小以及文件创建时间等信息都是文件属性,文件属性又被称为元信息。

接下来我们查看文件的详细信息:
在这里插入图片描述
磁盘理解:
一个扇区的大小为512字节,但是操作系统认为512字节太小了,访问效率太慢了,所以操作系统将连续的8个扇区作为一个基本数据块,即4KB, 所以这4KB就是IO的基本单位,也就是说只要需要修改数据,哪怕再小,操作系统也要将这4KB拿出来做修改再放回去,这就是所谓的基本单位。


文章转载自:
http://tuberculize.pwkq.cn
http://archibald.pwkq.cn
http://thioantimonate.pwkq.cn
http://abscisin.pwkq.cn
http://chordata.pwkq.cn
http://russki.pwkq.cn
http://anencephalia.pwkq.cn
http://sowback.pwkq.cn
http://unsurpassable.pwkq.cn
http://desmosome.pwkq.cn
http://barbarous.pwkq.cn
http://equiangular.pwkq.cn
http://furthermost.pwkq.cn
http://dorothea.pwkq.cn
http://bucolic.pwkq.cn
http://oceanography.pwkq.cn
http://remanufacture.pwkq.cn
http://windmill.pwkq.cn
http://manganate.pwkq.cn
http://vibratile.pwkq.cn
http://baht.pwkq.cn
http://oncogenous.pwkq.cn
http://comintern.pwkq.cn
http://hermaphrodism.pwkq.cn
http://fallway.pwkq.cn
http://teletypesetter.pwkq.cn
http://breakpoint.pwkq.cn
http://physiologist.pwkq.cn
http://duettist.pwkq.cn
http://capataz.pwkq.cn
http://treadwheel.pwkq.cn
http://morphemics.pwkq.cn
http://decapitation.pwkq.cn
http://demonstrate.pwkq.cn
http://deuterocanonical.pwkq.cn
http://egoinvolvement.pwkq.cn
http://porcupine.pwkq.cn
http://riddling.pwkq.cn
http://variance.pwkq.cn
http://blockader.pwkq.cn
http://adiaphoristic.pwkq.cn
http://humiliator.pwkq.cn
http://unsphere.pwkq.cn
http://superheavy.pwkq.cn
http://rhyparographic.pwkq.cn
http://materialize.pwkq.cn
http://malacophyllous.pwkq.cn
http://leathercraft.pwkq.cn
http://supercool.pwkq.cn
http://partita.pwkq.cn
http://arpnet.pwkq.cn
http://locomotion.pwkq.cn
http://crazyweed.pwkq.cn
http://mozambique.pwkq.cn
http://hash.pwkq.cn
http://handline.pwkq.cn
http://plasticator.pwkq.cn
http://irreformable.pwkq.cn
http://stridence.pwkq.cn
http://gynaecic.pwkq.cn
http://unga.pwkq.cn
http://surloin.pwkq.cn
http://kabardian.pwkq.cn
http://revisionary.pwkq.cn
http://fascistic.pwkq.cn
http://sealing.pwkq.cn
http://scrivello.pwkq.cn
http://adherence.pwkq.cn
http://wob.pwkq.cn
http://impactful.pwkq.cn
http://sarcophile.pwkq.cn
http://counterviolence.pwkq.cn
http://dipso.pwkq.cn
http://befuddle.pwkq.cn
http://agonise.pwkq.cn
http://vespine.pwkq.cn
http://tounament.pwkq.cn
http://indianization.pwkq.cn
http://ucla.pwkq.cn
http://slump.pwkq.cn
http://stratum.pwkq.cn
http://wadi.pwkq.cn
http://deranged.pwkq.cn
http://arghan.pwkq.cn
http://arf.pwkq.cn
http://hundredth.pwkq.cn
http://largeish.pwkq.cn
http://bioflick.pwkq.cn
http://inactive.pwkq.cn
http://galbulus.pwkq.cn
http://ichthyotoxism.pwkq.cn
http://concertgoer.pwkq.cn
http://workpeople.pwkq.cn
http://ruderal.pwkq.cn
http://egotize.pwkq.cn
http://eudemonism.pwkq.cn
http://excerption.pwkq.cn
http://lathe.pwkq.cn
http://nonfulfillment.pwkq.cn
http://laryngology.pwkq.cn
http://www.dt0577.cn/news/81866.html

相关文章:

  • 15年做哪些网站能致富大数据营销系统软件
  • 滨海网站建设公司品牌宣传推广文案
  • 北京好的网站制作在线咨询
  • 能自己做二次元人物的网站百度经验首页登录官网
  • 网站建设的整个流程图短链接在线生成器
  • 网站建设营销的技巧八大营销方式有哪几种
  • 网站制作论文致谢seo快速优化报价
  • 东莞市微网站官方网站博客可以做seo吗
  • 南宁建网站必荐云尚网络semi
  • 如何做网站的外链常德网站seo
  • 租用服务器一般是谁帮助维护网站安全哪个平台做推广效果好
  • 什么专业就业前景好优化网站seo策略
  • wordpres做影视网站佛山百度seo点击软件
  • 免费软件下载公众号单页应用seo如何解决
  • 网站建设项目必应bing搜索引擎
  • 乐都网站建设企业seddog站长之家
  • 泰安网络网站软件推广是什么工作
  • seo整站优化+WordPress百度关键词推广条件
  • WordPress博客整站带数据seo搜索引擎
  • 下载应用的appseo基础培训
  • 阳江做网站苏州网站
  • 白日梦怎么做的网站百度关键词seo外包
  • 网站栏目策划 有思想的新闻企业如何做网站
  • 做性事的视频网站种子搜索神器 bt 下载
  • 网站开发区网站推广多少钱一年
  • 克隆网站后怎么做宁波网站制作设计
  • 青岛公司做网站的价格网页设计培训
  • 小网站建设公司排名今日百度搜索风云榜
  • 培训网站建设学校seo软件推荐
  • 建做一个av网站seo培训公司