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.pswp.cn/news/711783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711783.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711783.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vs code快捷鍵

ShiftCtrlO vs code 提供很強大的功能&#xff0c;就是可以快速查文件中的符號列表和函數列表&#xff0c;我們首先打開一個源碼文件&#xff0c;比tcp.c&#xff0c;然后我們通過快捷鍵“ShiftCtrlO”即可打開對應源碼文件的符號列表和函數列表&#xff0c;通過查看這些列表&a…

【學習心得】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 程序的基本數據單元是數組。一…

rm刪除未釋放空間,linux sync有時不起作用

此時需要重啟系統即可. Linux中的sync命令用于將文件系統的緩沖區數據立即寫入磁盤&#xff0c;以確保數據的持久性。123456 sync命令沒有任何選項&#xff0c;簡單執行即可。它會將文件系統緩沖區中的數據寫入磁盤&#xff0c;并更新文件系統的超級塊及其他元數據。使用sync命…

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;讓用戶實踐各種創…

深入理解Redis中的漸進式Rehash技術

1. 引言 Redis是一款高性能的鍵值存儲系統,被廣泛應用于緩存、隊列、計數器等場景,因其快速、穩定的特性備受開發者青睞。在Redis的背后,有著許多復雜的數據結構和算法支撐著其高效運行,而其中之一就是Rehash操作。 Rehash是Redis中的一個關鍵操作,負責在數據量增加時對…

Web自動化測試平臺開發---Automated_platform

一、項目簡介 歷時一個假期&#xff0c;Automated_platform 第一版完工&#xff0c;是一款基于po模式的自動化測試平臺,采用后端技術為DjangoceleryRabbitMQmysql 配置mysql數據庫&#xff0c;進行數據遷移后&#xff0c;運行項目后&#xff0c;即可成功訪問http://127.0.0.1:8…

5. 升級 Spring Boot(Upgrading Spring Boot)

5. 升級 Spring Boot&#xff08;Upgrading Spring Boot&#xff09; 項目 wiki 提供如何從 Spring Boot 早期版本升級的說明。請按照 release notes 部分查找要升級到的版本。 升級說明總是版本說明的第一部分。如果您的版本落后一個以上&#xff0c;請確保您已經查看了所跳…

【軟考】數據結構之隊列和棧

目錄 1.例題一1.1題目1.2 題目截圖1.3 題目分析 1.例題一 1.1題目 輸出受限的雙端隊列是指元素可以從隊列的兩端輸入&#xff0c;但只能從隊列的一端輸出&#xff0c;如下圖所示&#xff0c;若有e1&#xff0c;e2&#xff0c;e3&#xff0c;e4依次進入輸出受限的雙端隊列&…

Nginx-location匹配規則

每次配置Nginx的時候&#xff0c;不是多個這匹配不上就是那匹配不上&#xff0c;多個斜線少個斜線的&#xff0c;然后頭疼&#xff0c;尤其多層代理之后&#xff0c;真是瘋狂掉頭發 #mermaid-svg-Z1ScpZFefeixtnn3 {font-family:"trebuchet ms",verdana,arial,sans-s…

Linux——進程控制(一)進程的創建與退出

目錄 一、進程創建 1.寫時拷貝 2.創建多個進程 二、進程終止 1.main函數的返回值 2.bash中的$? 3.自定義退出碼 4.C語言的錯誤碼 5.錯誤碼與退出碼的區別 6.代碼異常終止 7.exit函數 8.總結 一、進程創建 在之前&#xff0c;我們學過linux中的非常重要的函數——…