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

网站维护好的方法快速搭建网站软件

网站维护好的方法,快速搭建网站软件,襄阳门做网站,山东高端网站建设wang目录 struct file内核对象: 如何读写文件? 文件描述符在文件描述符表中的分配规则: 输出重定向初步解析: dup2实现复制文件描述符: struct file内核对象: struct file 是在内核空间中创建的用于描述文…

目录

struct file内核对象:

如何读写文件?

文件描述符在文件描述符表中的分配规则:

输出重定向初步解析:

dup2实现复制文件描述符:


struct file内核对象:

  • struct file 是在内核空间中创建的用于描述文件的结构体, 每当一个文件被打开时,内核会为该文件创建一个对应的 struct file 结构体,并在文件描述符表中为其分配一个文件描述符。

  • 基于文件的定义(文件 = 内容 + 属性),struct file 结构体包含了文件的各种属性,文件的操作方法,指向文件缓冲区的指针。

  • 修改文件属性,可以直接操作struct file的成员实现。

  • 修改文件内容,需要通过指向文件缓冲区的指针来操作。而缓冲区是内存中的一块区域,用于暂时存放文件的数据。当文件被读写时,数据被加载到缓冲区中进行进一步的操作。

如何读写文件?

  • 进程读取文件数据时,首先需要将文件从磁盘加载到 struct file 结构体的缓冲区中。

  • 进程写入数据到文件时,首先需要将目标文件的数据加载到缓冲区中。然后,进程在缓冲区中对数据进行修改或追加操作。之后缓冲区中的数据会被刷入磁盘。

  • 数据读写的本质是缓冲区与磁盘之间的数据交换。读取操作将磁盘中的数据拷贝到缓冲区,而写入操作则将缓冲区中的数据拷贝回磁盘。

文件描述符在文件描述符表中的分配规则:

  • 找到最小的没有被使用的下标,分配给打开的文件使用。

  • 如果一个文件被分配的文件描述符为3,将这个文件close之后,3这个文件描述符就被释放,新打开一个文件,新打开的文件就会被分配文件描述符3.

int main()
{int fd=open("file1", O_RDONLY); printf("%d\n",fd); //file1的文件描述符为3close(fd); //关闭file1int fd=open("file2", O_RDONLY); printf("%d\n",fd); //立刻打开另一个文件,该文件被分配文件描述符3close(fd);return 0;
}

输出重定向初步解析:

  • 重定向的本质是将数据输出目标从默认的输出设备(通常是显示器)重定向输出到指定的文件中。这可以通过对比 printf 和 fprintf 函数的行为来验证。

  • C 语言提供了两个常用的输出函数:printf 和 fprintf。printf 用于将数据输出到标准输出(通常是显示器),而 fprintf 则用于将数据输出到指定的文件。

  • 两个函数的本质都是向指定的文件描述符表的下标位置写入数据。printf 默认将数据写入到文件描述符表的下标 1(stdout),即标准输出流(显示器)。而 fprintf 则允许指定目标文件,通过传递不同的 FILE* 参数来决定数据写入到哪个文件中。

  • 重定向的实现可以通过关闭标准输出文件描述符并重新打开一个新的文件来完成。具体来说,使用 close(1) 关闭文件描述符表下标 1 处的显示器文件,然后打开一个新文件。此时,操作系统会将该新文件分配给下标 1。因此,后续调用 printf 时,数据将不再输出到显示器,而是写入到新打开的文件中。

  • 注意,当数据被输出到文件时,缓冲区机制仍然起作用。要确保数据及时写入文件,可以使用 \n 触发缓冲区刷新,或者调用 fflush 函数强制刷新缓冲区,将数据立即写入到文件中。

int printf(const char *format, ...); //...表示参数列表
int fprintf(FILE *stream, const char *format, ...);
echo "内容" >&[文件描述符] //重定向到指定文件描述符表指定下标文件中
echo "Hello, World!" >&1 //将字符串重定向到文件描述符表下标1的文件
2>&1 //将2文件描述符的内容重定向到1指向的文件中
./file 1>log.txt 2>err.txt //将file程序运行的结果从显示器重定向到log.txt,将file运行的错误信息重定向到err.txt。不要加空格

dup2实现复制文件描述符:

  • 系统接口,原型如下:

int dup2(int oldfd, int newfd);
  • 将newfd下标,指向oldfd下标处的文件,使得两个文件描述符指向同一个文件。

  • 如果newfd下标已经指向一个打开的文件,首先关闭这个文件,再指向oldfd处的文件。之后newfd和oldfd会指向同一个文件。

  • 多个文件描述符同时指向一个文件,释放其中一个或几个文件描述符并不会直接关闭文件。在struct file中有一个引用计数器,用于记录当前有多少个文件描述符指向文该件。当使用 close 函数释放一个文件描述符后,该文件的引用计数器会减一。如果引用计数器的值减少到 0,操作系统会真正关闭该文件,并释放与其相关的资源。

http://www.15wanjia.com/news/188114.html

相关文章:

  • 网站单个页面紧张搜索引擎蜘蛛封面型网站怎么做的
  • 重庆专业网站营销用frontpage怎么做网页
  • 公司网站开发费账务处理姜堰网络推广怎么做
  • 简单的企业网站php东莞网络公司哪家最好
  • seo批量建站方法微信营销成功的案例有哪些
  • 蓟州区建设银行官方网站官方网站建设ppt
  • 可以用来做视频网站的视频外链吗网络营销方式选择考虑的因素
  • 电脑和手机都能浏览的网站开发濮阳市建设工程交易网
  • 横翻网站模版湛江网站设计公司
  • 专门做logo的网站做微信小程序的网站
  • 自动发卡网站开发织梦做小游戏网站
  • 如何自建网站服务器做游戏直播什么游戏视频网站好
  • 购物网站那个信用好又便宜html模板素材
  • 公众号江苏建设信息网站wordpress建站教程 贴吧
  • 阿里巴巴官方网站站长做旅游网站
  • 学网站开发多少钱微网站站点名称
  • 做网站微信朋友圈应该怎么发如何实现一个制作好的网站
  • inititle 网站建设站群 网站如何做
  • 最大的搜索网站排名网站备案后应该做什么
  • 移动网站开发环境 主流域名批量注册查询
  • 新手建网站什么类型好域名备案查询网站备案信息查询
  • 城市门户网站.net网站开发教程百度贴吧
  • 安卓做网站教程家居网站建设基本流程
  • 大气网站首页搜索引擎营销的内容
  • 商城网站静态模板下载营销型网站建设优化建站
  • 开个人网站如何赚钱建设龙卡e付卡网站
  • 做网站要学什么知识自贡建设投资有限公司网站
  • 福建省建设信息网站重庆南坪网站建设
  • 在手机上如何制作网站文字生成图片在线使用
  • 图片站手机网站怎么做的怎么样做搜索引擎网站