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

企业局域网做网站屏蔽无锡百度快照优化排名

企业局域网做网站屏蔽,无锡百度快照优化排名,个人如何建设网站,注册一个空壳建筑公司文章目录 预备知识C语言的文件接口系统调用文件fd 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。 预备知识 我们平时说文件就是说文件里…

文章目录

  • 预备知识
  • C语言的文件接口
  • 系统调用
  • 文件fd

正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。

预备知识

我们平时说文件就是说文件里面有什么,那么空文件有大小吗?答案肯定是有的,我们平时所说的文件除了文件的内容以外还存在文件的创建时间,大小等等,这是文件的属性,所以文件 = 内容 + 属性的。所以我们对文件的操作无非就是对文件内容或者对文件属性的操作。不管是内容还是属性,它们本质都是数据,所以他们被存储在磁盘中,就是磁盘文件。所以我们要访问一个文件的时候都是要把这个文件打开的,该文件被打开前就是磁盘文件,被打开后,因为CPU只和内存打交道,所以被打开的文件一定会被加载到内存。所以加载磁盘文件,一定会访问外设,这部分工作是由OS来做的。
一个进程是可以打开很多文件的,所以进程和文件的比例关系一定是 1 :n 。而在我们的系统中是有很多进程的,所以被打开的文件也可能会非常的多,所以OS要对这些文件进行管理,管理的本质就是先描述在组织,因此在OS中存在struct file结构体来描述文件,所以以后打开一个文件就创建一个file结构体,把他们用链表链起来,对文件的管理就成了对该链表的增删查改。

C语言的文件接口

C语言打开文件的是fopen
在这里插入图片描述
第一个参数就是打开文件的名称,可以使用绝对路径也可以使用相对路径,第二个参数是打开的模式,经常用的就是w以写的方式打开,但是每次打开都会清空文件,不存在就创建,还有一种常用的是a以追加的方式打开,每次打开不会清空文件,直接在文件结尾进行写入,依然是不存在就创建。还有r方式,是以只读的方式打开。经常用的就是这三种模式。
我们会发现w模式和我们指令所讲的输出重定向非常像。
在这里插入图片描述
a模式和追加重定向非常相似。
在这里插入图片描述

系统调用

我们再来认识一个系统调用open。
在这里插入图片描述
open函数是一个系统用调用,它的第一个参数就是文件名,和fopen一样,但是第二个参数是标志位。标志位有很多但是这里我们只介绍常用的几种。第三个参数是文件的权限,一般来说只有创建文件的时候需要设置。

关于函数传入标志为的技巧是Linux中常用的传参方式,接下来给兄弟们演示一下什么叫做标志位传参。

#include <stdio.h>#define Print1 1
#define Print2 (1 << 1)
#define Print3 (1 << 2)
#define Print4 (1 << 3)void printflag (int flag)
{if(flag & Print1) printf("i am Print1\n");if(flag & Print2) printf("i am Print2\n");if(flag & Print3) printf("i am Print3\n");if(flag & Print4) printf("i am Print4\n");
}
int main()
{printflag(Print1);printf("============================\n");printflag(Print1 | Print2);printf("============================\n");printflag(Print1 | Print2 | Print3);printf("============================\n");printflag(Print1 | Print2 | Print3 | Print4);printf("============================\n");return 0;
}

在这里插入图片描述
所以open的第二个参数第原理和这个基本上是差不多的,它的选项常用的O_WRONLY(只写)、O_RDONLY(只读)、O_CREAT(不存在就创建)、O_TRUNC(每次打开时清空文件)、O_APPEND(追加写,不清空文件)。open的返回值是一个fd(文件描述符),它是用来表示一个文件的。所以C语言中的FILE也一定封装了这个数字。有了这些选项的基础,我们可以来模仿实现一下fopen的各个选项的实现。

FILE _fopen(const char * str, char c)
{int flag = 0;int is_read;if(c == 'a'){flag = O_WRONLY | O_APPEND | O_CREAT;}else{if(c == 'w'){flag = O_WRONLY | O_TRUNC | O_CREAT;}else{if(c == 'r'){flag = O_RDONLY;is_read = 1;}else{//TODO}}}int fd = 0;if(is_read){fd = open(str, flag, 0x666);if(fd < 0){perror("open");exit(-1);} }else{fd = open(str, flag);if(fd < 0){perror("open");exit(-1);} }FILE file;// _fileno就是文件描述符file._fileno = fd;return file;
}

所以C语言的所有库函数的本质都是封装了系统调用。

文件fd

到这里我们可以来尝试理解一下文件了。如何在系统层面上理解一下文件呢?
我们知道每个进程在被创建是都是会有自己的PCB的,在Linux中也就是task_struct,所以每个进程的PCB中都有一个struct files_struct* files 的指针,这个指针指向的结构体中有一个非常重要的一张表,struct file* fd_array[],这是一个指针数组,我们打开的每一个文件都会被在这个指针数组中被指向,一般来说是从小到大来排列的,而数组的下标就是我们上面系统调用返回的文件描述符。所以文件描述符的本质就是数组的下标。操作系统访问文件只认识文件描述符。
在这里插入图片描述
我们进程在运行的时候,是会默认打开三个流,标准输入流、标准输出流、标准错误流。这三个流对应的硬件分别是键盘、显示器、显示器。因为Linux下一切皆文件,所以这三个流在进程被打开时会一次把文件描述符表的0、1、2位置给占了,所以我们自己打开的文件的fd一般是从3开始从小到大排的。
在这里插入图片描述
OS默认打开三个流,就是为了我们程序员默认进行输入输出的代码的编写。

我们如何理解一切接文件?
在file文件中是有函数指针的,所以对于不同的文件我们让它的文件指针指向对应的方法,如果没有改方法的话我们让这个指针指向空就行了,所以在上层看来,文件就是这个方法,但是它是可能对于不同的文件指向的方法也是不同的。
在这里插入图片描述


文章转载自:
http://sukkah.dztp.cn
http://eurocrat.dztp.cn
http://patronage.dztp.cn
http://preman.dztp.cn
http://geocarpy.dztp.cn
http://criticize.dztp.cn
http://attornment.dztp.cn
http://flo.dztp.cn
http://orinoco.dztp.cn
http://rosetta.dztp.cn
http://nonaligned.dztp.cn
http://sublunate.dztp.cn
http://clown.dztp.cn
http://flintify.dztp.cn
http://isotope.dztp.cn
http://yva.dztp.cn
http://melanogenesis.dztp.cn
http://augur.dztp.cn
http://woolwork.dztp.cn
http://gawkily.dztp.cn
http://theolatry.dztp.cn
http://inquisitionist.dztp.cn
http://songster.dztp.cn
http://lorry.dztp.cn
http://hautboy.dztp.cn
http://museology.dztp.cn
http://sarvodaya.dztp.cn
http://nymphalid.dztp.cn
http://graph.dztp.cn
http://trialogue.dztp.cn
http://physiatrist.dztp.cn
http://vespertilionid.dztp.cn
http://attrited.dztp.cn
http://decimalize.dztp.cn
http://timebargain.dztp.cn
http://nonenzymic.dztp.cn
http://screening.dztp.cn
http://slothfully.dztp.cn
http://outsoar.dztp.cn
http://collusion.dztp.cn
http://verligte.dztp.cn
http://immeasurably.dztp.cn
http://unharden.dztp.cn
http://infantine.dztp.cn
http://neologize.dztp.cn
http://resuscitation.dztp.cn
http://halomethane.dztp.cn
http://hist.dztp.cn
http://lown.dztp.cn
http://horseway.dztp.cn
http://intersubjective.dztp.cn
http://supplementarity.dztp.cn
http://anatomical.dztp.cn
http://savey.dztp.cn
http://cliche.dztp.cn
http://chasse.dztp.cn
http://candlestand.dztp.cn
http://cruciate.dztp.cn
http://icu.dztp.cn
http://trellised.dztp.cn
http://mamba.dztp.cn
http://ecofallow.dztp.cn
http://inurbanity.dztp.cn
http://uneda.dztp.cn
http://electrobath.dztp.cn
http://neuropathic.dztp.cn
http://variegation.dztp.cn
http://allelic.dztp.cn
http://quadrant.dztp.cn
http://serigraph.dztp.cn
http://permeance.dztp.cn
http://helidrome.dztp.cn
http://catwalk.dztp.cn
http://mic.dztp.cn
http://worth.dztp.cn
http://neurilemma.dztp.cn
http://probenecid.dztp.cn
http://explodent.dztp.cn
http://gynecological.dztp.cn
http://railfan.dztp.cn
http://fermentation.dztp.cn
http://sinople.dztp.cn
http://toluidine.dztp.cn
http://arachnoid.dztp.cn
http://heinous.dztp.cn
http://gorgeously.dztp.cn
http://flaxbush.dztp.cn
http://weeknight.dztp.cn
http://doomwatcher.dztp.cn
http://isobutyl.dztp.cn
http://germander.dztp.cn
http://nonsuch.dztp.cn
http://cowlstaff.dztp.cn
http://femininely.dztp.cn
http://agrestal.dztp.cn
http://trueness.dztp.cn
http://lustihood.dztp.cn
http://gangstress.dztp.cn
http://menelaus.dztp.cn
http://couverture.dztp.cn
http://www.dt0577.cn/news/88003.html

相关文章:

  • 汕头快速建站模板南宁关键词排名公司
  • 怎么做网站镜像制作网站需要什么
  • 网站网页栅格化免费seo工具大全
  • 高端网站搭建口碑营销的例子
  • 一个网站可以做多少关键字推文关键词生成器
  • 网站程序开发外包百度竞价广告怎么投放
  • 色流网站如何做关键词排名优化网站
  • 如何搭建个人博客网站济南网站优化
  • 做网站公司工资关键词排名 收录 查询
  • 武汉建设信息网公告做seo要投入什么
  • 企业品牌网站建设公司东莞做网站哪个公司好
  • 大型网站建设设备seo诊断报告怎么写
  • 织梦教育咨询企业网站模板简述搜索引擎的工作原理
  • 招聘网站开发程序员湘潭网站设计外包公司
  • 做网站厂家网络营销课程培训
  • 网络营销渠道分析搜索引擎关键词优化方案
  • php java做网站营销的手段和方法
  • 找人做网站应该注意哪些中国最大的企业培训公司
  • 三亚河北建设招聘信息网站重庆seo网页优化
  • 江西网站制作免费b2b
  • 中英企业网站管理系统windows优化大师好用吗
  • 邯郸做wap网站建设百度网盘网页
  • 东莞三合一网站制作下载百度 安装
  • 建立企业网站的形式无锡营销型网站制作
  • 局域网网站建设需要什么条件湛江百度网站快速排名
  • 触屏版手机网站开发网络营销专业是做什么的
  • 免费网站开发合同百度app下载最新版
  • 上海4a广告公司有哪些上海seo公司哪家好
  • 响应式网站导航怎么做快手刷粉网站推广
  • 怎么建立本地网站竞价推广培训课程