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

网站建设岗位职责怎么写正规营销型网站定制

网站建设岗位职责怎么写,正规营销型网站定制,电子商务网站项目计划,免费网站建站手机文章目录 1. 缓冲区1.1 对实例进行分析1.2 对实例分析结果进行总结 序:在上一节中,我们本从C语言入手,从C语言的文件接口出发,逐渐过渡到系统对于文件的调用,我们用先描述,再组织6个字,创建文件…

文章目录

      • 1. 缓冲区
        • 1.1 对实例进行分析
        • 1.2 对实例分析结果进行总结

  • 序:在上一节中,我们本从C语言入手,从C语言的文件接口出发,逐渐过渡到系统对于文件的调用,我们用先描述,再组织6个字,创建文件结构体对文件进行管理,说出我对重定向和缓冲区的理解!!!现在,让我们更加深入的去了解缓冲区,搞清楚其中的本质原理,让我们对文件的操作有进一步的认识!!!

1. 缓冲区

1.1 对实例进行分析

实例一:

#include<stdio.h>
#include<unistd.h>
#include<string.h>int main()
{const char* msg="hello fwrite!\n";const char* str="hello write!\n";//C语言提供的接口printf("hello printf!\n");fprintf(stdout,"hello fprintf!\n");fwrite(msg,strlen(msg),1,stdout);//操作系统提供的接口write(1,str,strlen(str));return 0;
}

实例一结果如下:

在这里插入图片描述
我们发现所有内容都被打印出来了,没有什么其他现象。

实例二:

#include<stdio.h>
#include<unistd.h>
#include<string.h>int main()
{const char* msg="hello fwrite!\n";const char* str="hello write!\n";//C语言提供的接口printf("hello printf!\n");fprintf(stdout,"hello fprintf!\n");fwrite(msg,strlen(msg),1,stdout);//操作系统提供的接口write(1,str,strlen(str));fork( );return 0;
}

实例二结果如下:

在这里插入图片描述
和实例一打印的内容相比也没有什么不同的地方。

上面两段代码,唯一不一样的就是实例二中的结尾多了一个fork函数,在正常情况下,实例一和实例二打印的结果没有区别!!!。

如果我将这两段代码的结果放入一个文件当中,结果还是这样吗?

将实例一的内容放入文件log.txt中:

在这里插入图片描述

将实例二的内容放入文件log.txt中:

在这里插入图片描述

通过将实例一和实例二的内容放入文件,我们发现了不对劲的地方,为什么实例二放入文件后,通过C语言接口打印的内容,竟然打印了两遍!!!对于这个现象,我先不解释,但我们已经感觉到了,C语言的接口和系统接口有不同之处!!!

让我们接着看下面三个实例,让我们彻底看清有什么不同!!!

实例三:

#include<stdio.h>
#include<unistd.h>
#include<string.h>int main()
{const char* msg="hello fwrite!";//C语言提供的接口printf("hello printf!");fprintf(stdout,"hello fprintf!");fwrite(msg,strlen(msg),1,stdout);return 0;
}

实例三结果如下:

在这里插入图片描述
和实例一相比,去掉了’\n’,正常打印,无明显现象

实例四:

#include<stdio.h>
#include<unistd.h>
#include<string.h>int main()
{const char* msg="hello fwrite!";//C语言提供的接口printf("hello printf!");fprintf(stdout,"hello fprintf!");fwrite(msg,strlen(msg),1,stdout);close(1);return 0;
}

实例四结果如下:

在这里插入图片描述
和实例四相比,结尾多了个系统调用的close函数,没有东西打印出来。

实例五:

#include<stdio.h>
#include<unistd.h>
#include<string.h>int main()
{const char* str="hello write!";//操作系统提供的接口  write(1,str,strlen(str));close(1);return 0;
}

实例五结果如下:

在这里插入图片描述
和实例四相比,成功打印出来了

1.2 对实例分析结果进行总结

通过上面五个实例,我们知道了一件事,C语言调用的接口和系统调用的接口区别很大,C语言调用的接口如果没有及时刷新缓冲区就会被close刷掉,或者被拷贝到子进程中,而系统调用的接口则不同,没有被close刷掉,而且是立即打印,没有被子进程拷贝!!!

在这里插入图片描述
调用C语言接口进行的打印,要先放到缓冲区中,这个缓冲区一定不在操作系统内部!!!不是操作系统级别的缓冲区!!!

C语言他会给我们提供一个缓冲区,C接口的调用都会放在该用户级的缓冲区中。

显示器的文件的刷新方案是行刷新,所以在printf执行完要是遇到\n的时候就会进行刷新。(刷新的本质就是将数据通过1和write( )系统接口写入到内核中)

当我们调用close时,该系统调用不会管你用户层有什么,不论你C语言自己提供的缓冲区有没有东西,他都不关心,也不会帮你去刷新缓存区,而是直接close 1号文件描述符所对应的文件缓冲区,让C语言缓冲区的内容无法通过write( )刷新到内核级的文件缓冲区中。

所以,目前,我们认为,只要将数据刷新到了内核,数据就可以到硬件中了。

缓冲区刷新问题(非操作系统内核层,是语言层或用户层)

  • 无缓冲直接刷新(不需要等待,直接刷新出来)
  • 行缓冲不刷新,直到碰到 ’\n’才刷新 例如:像写入显示器时
  • 全缓冲缓冲区满了,才会刷新 例如:向普通文件写入时

进程退出时,会自动刷新缓冲区。

问题一:为什么要有个缓冲区?

  • 解决效率问题用户效率问题(例如,我们要将一个快递从湖南运往北京,我们不是直接将快递晕倒北京的,而是通过一个个的快递站,中转站,一步步的送到北京的,这样效率才会高。)
  • 配合格式化例如输入123,我们怎么知道他是字符123还是数字123,就要通过%s或%d的格式化来表达,而缓冲区就可以做到类型转化。

问题二:这个缓冲区在哪里呢?

首先,我们知道既然是文件操作,那就一定绕不开FILE struct ,FILE里面封装了fd(文件操作符),同样,FILE里面还有对应打开文件的缓冲区字段和维护的信息!!!

如图所示:
在这里插入图片描述

问题三:这个FILE对象是属于用户呢?还是属于操作系统呢?这个缓冲区是不是属于用户级的缓冲区呢?

语言方面的都属于用户层,缓冲区也是用户级的。

问题四:关于将实例二中的内容打印到文件中,发生的C语言接口打印了两次怎么解释?

在这里插入图片描述

向文件打印时,缓冲区刷新方案变成了全缓冲刷新,所以,只有等缓冲区满了,或进程结束才会刷新,所以,当我们执行fork时,那些还在缓冲区的数据,就会发生写实拷贝,将这些缓冲区里的数据拷贝到子进程C语言提供的缓冲区当中,当进程结束,就会刷新缓冲区,然后通过调用系统接口write和1号文件描述符所对应的文件缓冲区打印到显示器上。

总结:

本文章,从分析问题、解决问题和回答问题的角度,从几个现象入手,逐步剖析内涵的缓冲区原理,我们也了解到了什么是内核文件缓冲区,什么是C语言自己提供的文件缓冲区!!!

http://www.dtcms.com/wzjs/554772.html

相关文章:

  • 诚信的小程序开发兼职网站长沙创建网络平台费用
  • 本地网站建设视频网页设计与制作跟编程有关吗
  • 怎么做网站省钱廉江市住房和城乡规划建设局网站
  • 视觉设计网站推荐沈阳城市建设招生网站
  • 自己做了一个网站卖鞋推广引流方法
  • 企业网站管理系统联系我们怎么添加拨打12355可以找团员密码吗
  • 外贸公司网站有哪些软件销售
  • 对网站开发流程的了解怎样做一个网站赚钱吗
  • 网站被别人做镜像做网站外包公司名称
  • 网站建设 温州公司没有自己的网站
  • 微信微网站开发wordpress 扒站
  • 网站被同行链接代替专业做网站 优帮云
  • 站长音效淘宝自动推广软件
  • 设计软件免费下载网站亚马逊紧急联系电话会关联吗
  • 深圳自适应网站公司域名查询注册信息查询
  • 电子商务网站域名注册要求创新的宁波网站建设
  • 韩雪冬模板网站湖州网站制作报价
  • 家居行业网站建设深圳建设局网站投诉电话
  • 舟山网站制作公司手机企业网站推广
  • 深圳高端网站设计开发图书馆门户网站建设有哪些公司
  • 电子商务网站推广的方式有哪些小吃店网站建设
  • 网站信息核验单上海外贸网站建设
  • 织梦框架做网站简单广告网站留电话
  • 做网站需要机吗网站开发公司运营流程
  • 上海网站建设q.479185700強网站建设整个流程图
  • 网站如何设置二级域名服装公司网站设计
  • 网站正在建设中html请问做网站需要什么软件
  • 宁波网站建设工作室wordpress 网站收录
  • 凡客建站登录入口个人网站做贷款广告
  • 可以做机械设计接单的网站phpcms多个网站