Linux编程 2.4 文件和目录-Linux文件系统结构

1、文件操作基本元素

  1. 文件操作相关的最基本元素是:目录结构、索引节点和文件的数据本身。
    1. 目录结构(目录项)
    2. 索引节点(i节点)
    3. 文件的数据

2、文件系统的三个区域

属性:

        超级块:存放文件系统本身的结构信息

        i-节点表:存放i-节点信息列表

数据区:存放文件内容

文件访问过程:从文件名到文件内容,在目录中寻找文件名使用编号定位i-节点,i-节点包含数据块的列表。

3、link和unlink函数

注:link函数是创建的硬链接

#include<unistd.h>
int link(const char * existingpath,const char* newpath);
返回:成功返回0,出错返回-1
功能:创建一个指向现存文件链接(硬链接)
int unlink(const char * pathname);
返回:成功返回0,出错返回-1
功能:删除pathname指定的硬链接,并将由pathname所引用的文件链接计数减1.
  • 硬链接创建条件
    • 针对文件创建链接
    • 必须是同一个分区
    • 只有超级用户才能对目录建立链接
  • 文件删除条件
    • 链接计数为0
    • 无其它进程打开该文件

if(link(argv[1],argv[i])<0)
{perror("linke error");continue;
}

4、硬链接与软链接

4.1使用系统命令创建链接

4.2软链接与硬链接的区别

软链接不能创建数据区域,但有自己的i节点,来指向文件。

硬链接没有自己的i节点,没有自己的单独的数据,只是指向i节点

5、Symlink和readlink函数

#include<unistd.h>
int symlink(const char *actualpath,const char* sympath);
返回:成功返回0,出错返回-1
功能:创建一个符号链接(软链接)
int readlink(const char * pathname,char * buf,size_t bufsize);
返回:成功返回读到的字节数,出错返回-1
功能:打开该链接本身,并读该链接中的名字
  • 符号链接创建
    1. 创建符号链接并不要求actualpath存在
    2. 可以跨文件系统建立符号链接


6、remove和rename函数

#include<unistd.h>
int remove(const char *pathname);
返回:成功返回0,出错返回-1
功能:解除对一个文件或目录的连接int rename(const char * oldname,const char * newname);
返回:成功返回0,出错返回-1
功能:文件或目录更名

对于文件,remove的功能与unlink相同

对于目录,remove的功能与rmdir相同

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习心得】Python调用JS的三种常用方法

在做JS逆向的时候&#xff0c;一种情况是直接用Python代码复现JS代码的功能&#xff0c;达成目的。但很多时候这种方法有明显的缺点&#xff0c;那就是一旦JS代码逻辑发生了更改&#xff0c;你就得重写Python的代码逻辑非常不便。于是第二种情况就出现了&#xff0c;我直接得到…

python自动化管理和zabbix监控网络设备(防火墙和python自动化配置部分)

目录 前言 一、ssh配置 1.FW1 2.core-sw1 3.core-sw2 二、python自动化配置防火墙 三、验证DNAT 四、验证DNAT 前言 视频演示请访问b站主页 白帽小丑的个人空间-白帽小丑个人主页-哔哩哔哩视频 一、ssh配置 给需要自动化管理的设备配置ssh服务端用户名和密码 1.FW1 …

纯css实现-让字符串在文字少时显示为居中对齐,而在文字多时显示为左对齐

纯css实现-让字符串在文字少时显示为居中对齐&#xff0c;而在文字多时显示为左对齐 使用flex实现 思路 容器样式&#xff08;.container&#xff09;: Flex容器的BFC性质使得其内部的子元素&#xff08;.text-box&#xff09;在水平方向上能够居中&#xff0c;通过justify-c…

生态环境数据分析新篇章:Meta分析、R语言、Matlab、贝叶斯、结构方程模型等的前沿实践

目录 ①Meta分析在生态环境领域里的应用 ②R语言在生态环境领域中的应用 ③MATLAB在生态环境数据处理与分析中的应用 ④基于R语言piecewiseSEM结构方程模型在生态环境应用 ⑤R语言贝叶斯方法在生态环境领域中的高阶技术应用 更多应用 为了Meta分析问题的设计、基础理论、…

【菜鸟入门!】Matlab零基础快速入门教程

数学建模竞赛中&#xff0c;编程软件是必不可缺少的&#xff0c;比如大家都熟知的MATLAB多数同学们都会经常用到&#xff0c;今天给大家介绍一些MATLAB的基本元素&#xff0c;希望帮助大家更好的掌握编写基本的函数&#xff01; 变量和数组 MATLAB 程序的基本数据单元是数组。一…

Vue.js的双向绑定原理

Vue的双向绑定 vue双向绑定是其最重要的核心亮点&#xff0c;其原理也很简单&#xff0c;这里做个简单总结 vue2的双向绑定是利用的Object.definePropertyvue3的双向绑定是利用的 ES6Porxy中的defineProperty(target, propKey, propDesc 其作用类似于Object.defineProperty …

您想要拥有 Apple Vision Pro 的原因

自从2024年2月2日Apple Vision Pro发布以来&#xff0c;网上已经有很多关于如何使用这款苹果最新设备的示例。该平台引入的空间计算新世界能够完成许多在其他设备上无法完成的事情。Reddit 上的这个人能够以 51202160 的分辨率从他的 PC 上串流游戏&#xff01;在本文中&#x…

SpringMVC01、回顾MVC

1、回顾MVC 1.1、什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式&#xff0c;MVC是一种架构模式。…

Docker部署前后端服务示例

使用Docker部署js前端 1.创建Dockerfile 在项目跟目录下创建Dockerfile文件&#xff1a; # 使用nginx作为基础镜像 FROM nginx:1.19.1# 指定工作空间 WORKDIR /data/web# 将 yarn build 打包后的build文件夹添加到工作空间 ADD build build# 将项目必要文件添加到工作空间&a…

数据结构—>带你深入了解单链表(基础篇)

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;橘橙黄又青-CSDN博客 前面我们学习了顺序表&#xff0c;今天我们来学习与顺序表类似的单链表 1.&#x1f3…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:透明度设置)

设置组件的透明度。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 opacity opacity(value: number | Resource) 设置组件的不透明度。 卡片能力&#xff1a; 从API version 9开始&#xff0c;该接口…

香橙派AIpro快速上手指南

1 前言 作为业界首款基于昇腾深度研发的AI开发板&#xff0c;Orange Pi AIpro无论在外观上、性能上还是技术服务支持上都非常优秀&#xff0c;其8/20TOPS澎湃算力是目前开发板市场中所具备的最大算力&#xff0c;能覆盖生态开发板者的主流应用场景&#xff0c;让用户实践各种创…

Web自动化测试平台开发---Automated_platform

一、项目简介 历时一个假期&#xff0c;Automated_platform 第一版完工&#xff0c;是一款基于po模式的自动化测试平台,采用后端技术为DjangoceleryRabbitMQmysql 配置mysql数据库&#xff0c;进行数据迁移后&#xff0c;运行项目后&#xff0c;即可成功访问http://127.0.0.1:8…

【软考】数据结构之队列和栈

目录 1.例题一1.1题目1.2 题目截图1.3 题目分析 1.例题一 1.1题目 输出受限的双端队列是指元素可以从队列的两端输入&#xff0c;但只能从队列的一端输出&#xff0c;如下图所示&#xff0c;若有e1&#xff0c;e2&#xff0c;e3&#xff0c;e4依次进入输出受限的双端队列&…

Linux——进程控制(一)进程的创建与退出

目录 一、进程创建 1.写时拷贝 2.创建多个进程 二、进程终止 1.main函数的返回值 2.bash中的$? 3.自定义退出码 4.C语言的错误码 5.错误码与退出码的区别 6.代码异常终止 7.exit函数 8.总结 一、进程创建 在之前&#xff0c;我们学过linux中的非常重要的函数——…

速卖通店铺营销秘籍:如何巧妙运用活动提升转化率

对于速卖通卖家而言&#xff0c;想要提升店铺的成交率&#xff0c;除了依赖付费推广外&#xff0c;更重要的是如何通过店铺营销来吸引和留住潜在买家。今天&#xff0c;我们就来深入探讨一下速卖通店铺营销的几个关键策略。 首先&#xff0c;我们要明确一点&#xff0c;速卖通平…

IDEA中的Structure模块使用详解

IDEA中的Structure模块使用详解 类方法的展示 从左往右介绍&#xff1a; 1、最开头的 m 标识是表示为方法&#xff0c;如出现 f 标识则表示为属性&#xff1b; 2、m后面跟着的是方法或者属性的访问修饰符&#xff1a; #红色关闭的锁表示为private&#xff1b; #圆圈表示不带…

使用Docker搭建一款实用的个人IT工具箱——It-Tools

作为程序员&#xff0c;在日常工作中&#xff0c;需要借助一些工具来提高我们工作效率&#xff0c;IT-Tools是为开发人员度身打造的一套便捷在线工具。它提供全面功能&#xff0c;使开发者能以更高效方式完成任务。经由IT-Tools&#xff0c;开发人员能轻松应对各类技术挑战&…

qt QRadioButton 及QButtonGroup 使用

QRadioButton 放在组合框QGroupBox中&#xff0c;再点击时&#xff0c;即使有多个QRadioButton按钮&#xff0c;同时选中的也就只有一个。 如下图所示&#xff0c; 对于多个QRadioButton&#xff0c;每个按钮都写一个槽函数是不太明智的选择&#xff0c;需要将QRadioButton放在…

「MySQL」增删查改

在操作数据库中的表时&#xff0c;需要先使用该数据库&#xff1a; use database;新增 创建表 先用 use 指定一个数据库,然后使用 create 新增一个表 比如建立一个学生表 mysql> use goods; mysql> create table student(-> name varchar(4),-> age int,-> …