文件描述符,它在哪里存的,exec()后還存在嗎

學過計系肯定了解 寄存器、程序計數器、堆棧這些 程序運行需要的資源。 這些是進程地址空間
而操作系統分配一個進程資源時,分配的是 PCB 進程控制塊
所以進程控制塊還維護其他資源——程序與外部交互的資源——文件、管道、套接字。

文章目錄

    • 文件描述符
    • 進程管理
    • exec() 之后文件描述符的情況

文件描述符

文件描述符(File Descriptor, FD)是由操作系統管理的資源,并不會存儲在用戶進程的地址空間,而是由內核維護,并在進程控制塊(PCB)中記錄。

用戶態的進程只能通過 fd(整數)間接訪問文件,無法直接訪問內核中的文件數據。

進程管理

┌───────────────────┐
│  進程控制塊(PCB) │
│ ┌───────────────┐ │
│ │  文件描述符表  │ │   <--- 用戶進程訪問的 `fd` 存在這里
│ │  (fd 0 -> stdin) │
│ │  (fd 1 -> stdout) │
│ │  (fd 2 -> stderr) │
│ │  (fd 3 -> socket) │
│ └───────────────┘ │
└───────────────────┘
┌───────────────────────┐
│  文件描述符表【進程私有】│
│  fd 3 -> 指向打開文件表 │
└───────────────────────┘↓
┌───────────────────┐
│  打開文件表【系統共享】│
│  記錄文件偏移量、模式  │
└───────────────────┘↓
┌───────────────────┐
│   VFS【文件系統】  │
│   指向具體文件數據 │
└───────────────────┘

exec() 之后文件描述符的情況

exec() 不會 清空進程的文件描述符表(除非 FD_CLOEXEC 標志被設置)。

fcntl(pipefd[1], F_SETFD, FD_CLOEXEC);  // 讓寫端在 exec() 后自動關閉可以設置這個標志位
其實就是 close after exec ~

文件描述符仍然指向原來的打開文件表和 VFS 層的文件對象,因此 exec() 后仍可使用繼承的 fd(如管道、套接字)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74621.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74621.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74621.shtml

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

相關文章

Slidev使用(一)安裝

文章目錄 1. **安裝位置**2. **使用方式**3. **適用場景**4. **管理和維護** 全局安裝1. **檢查 Node.js 和 npm 是否已安裝**2. **全局安裝 Slidev CLI**3. **驗證安裝是否成功**4. **創建幻燈片文件**5. **啟動 Slidev**6. **實時編輯和預覽**7. **構建和導出&#xff08;可選…

第二十一章:模板與繼承_《C++ Templates》notes

模板與繼承 重點和難點編譯與測試說明第一部分&#xff1a;多選題 (10題)第二部分&#xff1a;設計題 (5題)答案與詳解多選題答案&#xff1a;設計題參考答案 測試說明 重點和難點 21.1 空基類優化&#xff08;EBCO&#xff09; 知識點 空基類優化&#xff08;Empty Base Cla…

AOA與TOA混合定位,MATLAB例程,自適應基站數量,三維空間下的運動軌跡,濾波使用EKF

本代碼實現了一個基于 到達角(AOA) 和 到達時間(TOA) 的混合定位算法,結合 擴展卡爾曼濾波(EKF) 對三維運動目標的軌跡進行濾波優化。代碼通過模擬動態目標與基站網絡,展示了從信號測量、定位解算到軌跡濾波的全流程,適用于城市峽谷、室內等復雜環境下的定位研究。 文…

量子計算:開啟未來計算的新紀元

一、引言 在當今數字化時代&#xff0c;計算技術的飛速發展深刻地改變了我們的生活和工作方式。從傳統的電子計算機到如今的高性能超級計算機&#xff0c;人類在計算能力上取得了巨大的進步。然而&#xff0c;隨著科技的不斷推進&#xff0c;我們面臨著越來越多的復雜問題&…

AMD機密計算虛擬機介紹

一、什么機密計算虛擬機 機密計算虛擬機 是一種基于硬件安全技術(如 AMD Secure Encrypted Virtualization, SEV)的虛擬化環境,旨在保護虛擬機(VM)的 ?運行中數據?(包括內存、CPU 寄存器等)免受外部攻擊或未經授權的訪問,即使云服務提供商或管理員也無法窺探。 AMD …

如何通過數據可視化提升管理效率

通過數據可視化提升管理效率的核心方法包括清晰展示關鍵指標、及時發現和解決問題、支持決策優化。其中&#xff0c;清晰展示關鍵指標尤為重要。通過數據可視化工具直觀地呈現關鍵績效指標&#xff08;KPI&#xff09;&#xff0c;管理者能快速、準確地理解業務現狀&#xff0c…

.git 文件夾

文件夾介紹 &#x1f34e; 在 macOS 上如何查看 .git 文件夾&#xff1f; ? 方法一&#xff1a;終端查看&#xff08;最推薦&#xff09; cd /你的項目路徑/ ls -a-a 參數表示“顯示所有文件&#xff08;包括隱藏的&#xff09;”&#xff0c;你就能看到&#xff1a; .git…

MongoDB 與 Elasticsearch 使用場景區別及示例

一、核心定位差異 ?MongoDB? ?定位?&#xff1a;通用型文檔數據庫&#xff0c;側重數據的存儲、事務管理及結構化查詢&#xff0c;支持 ACID 事務?。?典型場景?&#xff1a; 動態數據結構存儲&#xff08;如用戶信息、商品詳情&#xff09;?。需事務支持的場景&#xf…

【深度學習基礎 2】 PyTorch 框架

目錄 一、 PyTorch 簡介 二、安裝 PyTorch 三、PyTorch 常用函數和操作 3.1 創建張量&#xff08;Tensor&#xff09; 3.2 基本數學運算 3.3 自動求導&#xff08;Autograd&#xff09; 3.4 定義神經網絡模型 3.5 訓練與評估模型 3.6 使用模型進行預測 四、注意事項 …

uniapp中APP上傳文件

uniapp提供了uni.chooseImage&#xff08;選擇圖片&#xff09;&#xff0c; uni.chooseVideo&#xff08;選擇視頻&#xff09;這兩個api&#xff0c;但是對于打包成APP的話就沒有上傳文件的api了。因此我采用了plus.android中的方式來打開手機的文件管理從而上傳文件。 下面…

推陳換新系列————java8新特性(編程語言的文藝復興)

文章目錄 前言一、新特性秘籍二、Lambda表達式2.1 語法2.2 函數式接口2.3 內置函數式接口2.4 方法引用和構造器引用 三、Stream API3.1 基本概念3.2 實戰3.3 優勢 四、新的日期時間API4.1 核心概念與設計原則4.2 核心類詳解4.2.1 LocalDate&#xff08;本地日期&#xff09;4.2…

樹莓派5從零開發至脫機腳本運行教程——1.系統部署篇

樹莓派5應用實例——工創視覺 前言 哈嘍&#xff0c;各位小伙伴&#xff0c;大家好。最近接觸了樹莓派&#xff0c;然后簡單的應用了一下&#xff0c;學習程度并不是很深&#xff0c;不過足夠剛入手樹莓派5的小伙伴們了解了解。后面的幾篇更新的文章都是關于開發樹莓派5的內容…

GPT Researcher 的win docker安裝攻略

github網址是&#xff1a;https://github.com/assafelovic/gpt-researcher 因為docker安裝方法不夠清晰&#xff0c;因此寫一個使用方法 以下是針對 Windows 系統 使用 Docker 運行 AI-Researcher 項目的 詳細分步指南&#xff1a; 步驟 1&#xff1a;安裝 Docker 下載 Docke…

【后端】【Django DRF】從零實現RBAC 權限管理系統

Django DRF 實現 RBAC 權限管理系統 在 Web 應用中&#xff0c;權限管理 是一個核心功能&#xff0c;尤其是在多用戶系統中&#xff0c;需要精細化控制不同用戶的訪問權限。本文介紹如何使用 Django DRF 設計并實現 RBAC&#xff08;基于角色的訪問控制&#xff09;系統&…

C#基礎學習(五)函數中的ref和out

1. 引言&#xff1a;為什么需要ref和out&#xff1f; ?問題背景&#xff1a;函數參數默認按值傳遞&#xff0c;值類型在函數內修改不影響外部變量&#xff1b;引用類型重新賦值時外部對象不變。?核心作用&#xff1a;允許函數內部修改外部變量的值&#xff0c;實現“雙向傳參…

八綱辨證總則

一、八綱辨證的核心定義 八綱即陰、陽、表、里、寒、熱、虛、實&#xff0c;是中醫分析疾病共性的綱領性辨證方法。 作用&#xff1a;通過八類證候歸納疾病本質&#xff0c;為所有辨證方法&#xff08;如臟腑辨證、六經辨證&#xff09;的基礎。 二、八綱分類與對應關系 1. 總…

【linux重設gitee賬號密碼 克隆私有倉庫報錯】

出現問題時 Cloning into xxx... remote: [session-1f4b16a4] Unauthorized fatal: Authentication failed for https://gitee.com/xxx/xxx.git/解決方案 先打開~/.git-credentials vim ~/.git-credentials或者創建一個 torch ~/.git-credentials 添加授權信息 username/pa…

綠聯NAS安裝內網穿透實現無公網IP也能用手機平板遠程訪問經驗分享

文章目錄 前言1. 開啟ssh服務2. ssh連接3. 安裝cpolar內網穿透4. 配置綠聯NAS公網地址 前言 大家好&#xff0c;今天給大家帶來一個超級炫酷的技能——如何在綠聯NAS上快速安裝cpolar內網穿透工具。想象一下&#xff0c;即使沒有公網IP&#xff0c;你也能隨時隨地遠程訪問自己…

CSS 美化頁面(一)

一、CSS概念 CSS&#xff08;Cascading Style Sheets&#xff0c;層疊樣式表&#xff09;是一種用于描述 HTML 或 XML&#xff08;如 SVG、XHTML&#xff09;文檔 樣式 的樣式表語言。它控制網頁的 外觀和布局&#xff0c;包括字體、顏色、間距、背景、動畫等視覺效果。 二、CS…

空轉 | GetAssayData doesn‘t work for multiple layers in v5 assay.

問題分析 當我分析多個樣本的時候&#xff0c;而我的seurat又是v5時&#xff0c;通常就會出現這樣的報錯。 錯誤的原因有兩個&#xff1a; 一個是參數名有slot變成layer 一個是GetAssayData 不是自動合并多個layers&#xff0c;而是選擇保留。 那么如果我們想合并多個樣本&…