進程控制 ─── linux第15課

目錄

進程控制

1.進程創建

(fork前面講過了)

寫時拷貝

進程終止

進程退出場景

退出碼

進程終止方法


進程控制

1.進程創建

(fork前面講過了)

在linux中fork函數時非常重要的函數,它從已存在進程中創建一個新進程。新進程為子進程,而原進程為父進程

#include pid_t fork(void); 
返回值:自進程中返回0,父進程返回子進程id,出錯返回-1

進程調用fork,當控制轉移到內核中的fork代碼后,內核做:

  • 分配新的內存塊和內核數據結構給子進程
  • 將父進程部分數據結構內容(pcb?虛擬進程空間?頁表 )拷貝至子進程
  • 添加子進程到系統進程列表當中
  • fork返回,開始調度器調度

寫時拷貝

? ? ? ? 寫時拷貝:申請內存,發生拷貝,進行數據修改,修改頁表的物理內存,恢復權限.

并沒有對原數據區進行覆蓋

????????通常,父子代碼共享,父子再不寫入時,數據也是共享的,當任意一方試圖寫入,便以寫時拷貝的方式各自一份副本。具體見下圖:

父進程創建子進程時 ,子進程繼承的頁表中權限全是只讀的?,? 如果子進程嘗試修改,會觸發系統錯誤(因為權限都是只讀) 觸發缺頁中斷(進行系統檢測)?

????????1.子進程如果修改代碼段(代碼段不能修改),會導致子進程被殺掉

????????2.?子進程如果修改數據區,?則發生寫時拷貝,也恢復了頁表中的讀寫權限.

進程終止

進程退出場景

  • 代碼運行完畢,結果正確
  • 代碼運行完畢,結果不正確
  • 代碼異常終止

main函數的返回值(退出碼)--->返回給父進程或者系統

echo $?? 查看最近一個進程的退出碼

退出碼

? ? ? ? 0:成功

? ? ? ? 非零:錯誤? ?不同的數字代表不同的錯誤類型

進程終止方法

  1. main函數return? ? ? 而其他函數return僅僅只是函數的調用結束,與main函數不同
  2. exit( )? ? ? ? ? ? ? ? ? ? 在代碼的任意地方表示進程結束(會將緩沖區的內容刷新出來)推薦用
  3. _exit( )? ? ? ? ? ? ? ? ? 不會將緩沖區的內容刷新? ? ??

exit( )是上層,_exit( )是下層?

exit()=_exit() +fllush( )

return退出? ? ?return是一種更常見的退出進程方法。執行return n等同于執行exit(n),因為調用main的運行時函數會將main的返回值當做 exit的參數。

示例

#include <unistd.h>
void exit(int status);
int main()
{printf("hello");exit(0);
}運行結果:
[root@localhost linux]# ./a.out
hello[root@localhost linux]#int main()
{printf("hello");_exit(0);
}運行結果:
[root@localhost linux]# ./a.out
[root@localhost linux]#

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

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

相關文章

常見的網絡協議介紹

一、什么是網絡協議 指的是通信雙方的數據發送和接收順序&#xff0c;數據的封裝規則。 通俗解釋&#xff1a;描述雙方發送和接收的每個字節是按照什么規則。 二、TCP/IP體系的常用協議 (一)應用層 HTTP&#xff1a;超文本協議&#xff1b;指的是用來傳輸文本網頁的協議&#…

Hive-07之企業級調優

????????hive的企業級調優 1、Fetch抓取 Fetch抓取是指&#xff0c;Hive中對某些情況的查詢可以不必使用MapReduce計算 例如&#xff1a;select * from score;在這種情況下&#xff0c;Hive可以簡單地讀取employee對應的存儲目錄下的文件&#xff0c;然后輸出查詢結果…

華為云 | 快速搭建DeepSeek推理系統

DeepSeek&#xff08;深度求索&#xff09;作為一款國產AI大模型&#xff0c;憑借其高性能、低成本和多模態融合能力&#xff0c;在人工智能領域崛起&#xff0c;并在多個行業中展現出廣泛的應用潛力。 如上所示&#xff0c;在華為云解決方案實踐中&#xff0c;華為云提供的快速…

Spring Boot 3 整合 MinIO 實現分布式文件存儲

引言 文件存儲已成為一個做任何應用都不可回避的需求。傳統的單機文件存儲方案在面對大規模數據和高并發訪問時往往力不從心&#xff0c;而分布式文件存儲系統則提供了更好的解決方案。本篇文章我將基于Spring Boot 3 為大家講解如何基于MinIO來實現分布式文件存儲。 分布式存…

3月5日作業

代碼作業&#xff1a; #!/bin/bash# 清空目錄函數 safe_clear_dir() {local dir"$1"local name"$2"if [ -d "$dir" ]; thenwhile true; doread -p "檢測到 $name 目錄已存在&#xff0c;請選擇操作&#xff1a; 1) 清空目錄內容 2) 保留目…

達夢數據庫關于參數PK_WITH_CLUSTER的改動分析

目錄 1、PK_WITH_CLUSTER取值為0 2、PK_WITH_CLUSTER取值為1 達夢數據庫的參數PK_WITH_CLUSTER在最近使用過程中發現與前期使用的版本存在差異&#xff0c;特此測試分析一下。具體哪個版本改動的暫未得知。 PK_WITH_CLUSTER&#xff0c;默認值為0&#xff0c;動態會話級參數。…

android11使用gpio口控制led狀態燈

目錄 一、簡介 二、解決方法 A、底層驅動 B、上層調用 C、驗證 一、簡介 1、需求&#xff1a;這里是用2個gpio口來控制LED燈&#xff0c;開機時默認亮藍燈&#xff0c;按開機鍵&#xff0c;休眠亮紅燈&#xff0c;喚醒亮藍燈。 原理圖&#xff1a; 這里由于主板上電阻R63…

windows 利用nvm 管理node.js 2025最新版

1.首先在下載nvm 下載鏈接 2. 下載最新版本的nvm 3. 同意協議 注意&#xff1a;選擇安裝路徑 之后一直下一步即可 可以取消勾選 open with Powershell 勾選后它會自動打開Powershell 這里選用cmd 輸入以下命令查看是否安裝成功 nvm version 查看已經安裝的版本 我之前自…

深入淺出:UniApp 從入門到精通全指南

https://juejin.cn/post/7440119937644101684 uni-app官網 本文是關于 UniApp 從入門到精通的全指南&#xff0c;涵蓋基礎入門&#xff08;環境搭建、創建項目、項目結構、編寫運行&#xff09;、核心概念與進階知識&#xff08;組件與開發、頁面路由與導航、數據綁定與響應式…

MySQL ——數據的增刪改查

一、DML語言 1.1 insert插入數據 語法&#xff1a;insert [into] 表名 [字段名] values(值列表)&#xff1b; 插入一行數據 第一種&#xff1a;insert into file1(id,name,age) values (1,‘aa’,11); 第二種&#xff1a;insert into file1 values(1,‘aa’,11); 插入多行數…

【CF記錄】貪心——A. Scrambled Scrabble

https://codeforces.com/contest/2045/problem/A 思路&#xff1a; 由于Y有兩種選擇&#xff0c;NG也是&#xff0c;那我們可以枚舉以下情況&#xff1a;選i個Y做輔音&#xff0c;j個NG做輔音 然后貪心選擇最長的即可&#xff0c;觀察到S最長為5000&#xff0c;即使是也不會…

C語言【指針篇】(四)

前言&#xff1a;正文1. 字符指針變量2. 數組指針變量2.1 數組指針變量是什么?2.2 數組指針變量怎么初始化 3. 二維數組傳參的本質4. 函數指針變量4.1 函數指針變量的創建4.2 函數指針變量的使用4.3 兩段有趣的代碼4.3.1 typedef關鍵字 5. 函數指針數組6. 轉移表 總結 前言&am…

React + TypeScript 實戰指南:用類型守護你的組件

TypeScript 為 React 開發帶來了強大的類型安全保障&#xff0c;這里解析常見的一些TS寫法&#xff1a; 一、組件基礎類型 1. 函數組件定義 // 顯式聲明 Props 類型并標注返回值 interface WelcomeProps {name: string;age?: number; // 可選屬性 }const Welcome: React.FC…

【玩轉正則表達式】將正則表達式中的分組(group)與替換進行結合使用

在文本處理和數據分析領域&#xff0c;正則表達式&#xff08;Regular Expressions&#xff0c;簡稱regex&#xff09;是一種功能強大的工具。它不僅能夠幫助我們匹配和搜索字符串中的特定模式&#xff0c;還能通過分組&#xff08;Grouping&#xff09;和替換&#xff08;Subs…

Flutter 學習之旅 之 flutter 不使用插件,簡單實現一個 Toast 功能

Flutter 學習之旅 之 flutter 不使用插件&#xff0c;簡單實現一個 Toast 功能 目錄 Flutter 學習之旅 之 flutter 不使用插件&#xff0c;簡單實現一個 Toast 功能 一、簡單介紹 二、簡單介紹 Toast 1. 確保正確配置 navigatorKey 2. 避免重復顯示 Toast 3. 確保 Toast …

《OpenCV》——dlib(人臉應用實例)

文章目錄 dlib庫dlib庫——人臉應用實例——表情識別dlib庫——人臉應用實例——疲勞檢測 dlib庫 dlib庫的基礎用法介紹可以參考這篇文章&#xff1a;https://blog.csdn.net/lou0720/article/details/145968062?spm1011.2415.3001.5331&#xff0c;故此這篇文章只介紹dlib的人…

學習日記-250305

閱讀論文&#xff1a;Leveraging Pedagogical Theories to Understand Student Learning Process with Graph-based Reasonable Knowledge Tracing ps:代碼邏輯最后一點還沒理順&#xff0c;明天繼續 4.2 Knowledge Memory & Knowledge Tracing 代碼研究&#xff1a; 一般…

【AI大模型】DeepSeek + Kimi 高效制作PPT實戰詳解

目錄 一、前言 二、傳統 PPT 制作問題 2.1 傳統方式制作 PPT 2.2 AI 大模型輔助制作 PPT 2.3 適用場景對比分析 2.4 最佳實踐與推薦 三、DeepSeek Kimi 高效制作PPT操作實踐 3.1 Kimi 簡介 3.2 DeepSeek Kimi 制作PPT優勢 3.2.1 DeepSeek 優勢 3.2.2 Kimi 制作PPT優…

【ESP-ADF】在 VSCode 安裝 ESP-ADF 注意事項

1.檢查網絡 如果您在中國大陸安裝&#xff0c;請使用魔法上網&#xff0c;避免無法 clone ESP-ADF 倉庫。 2.VSCode 安裝 ESP-ADF 在 VSCode 左側活動欄選擇 ESP-IDF:explorer&#xff0c;展開 advanced 并點擊 Install ESP-ADF 然后會出現選擇 ESP-ADF 安裝目錄。 如果出現…

關于2023新版PyCharm的使用

考慮到大家AI編程的需要&#xff0c;建議大家安裝新版Python解釋器和新版PyCharm&#xff0c;下載地址都可以官網進行&#xff1a; Python&#xff1a;Download Python | Python.org&#xff08;可以根據需要自行選擇&#xff0c;建議選擇3.11&#xff0c;保持交流版本一致&am…