【Linux 進程】進程程序替換

文章目錄

      • 1.進程替換的六個庫函數
      • 2.execl

1.進程替換的六個庫函數

  • 使用 man 3 execl 進行查詢,3表示 Linux 中的3號手冊,即為庫函數(例如C標準庫中的庫函數,printfmalloc

  • man 1: 用戶命令(在shell中可以執行的命令,如 ls, cp

  • man 2: 系統調用(由內核提供的接口,如 open, read, fork

在這里插入圖片描述

2.execl

🍎參數介紹
pathname:表示要替換程序的路徑(絕對路徑或者相對路徑都可);
arg:命令行參數的第一個參數,一般是程序名本身;
...:表示可變參數,按照要求填寫命令行參數即可
注意:結尾一定要以 NULL,表示結束標志;

execl的返回值我們不用關心,因為只要程序替換成功,舊的代碼將不再執行,如果后續的代碼執行了,說明替換失敗。

int execl(const char *pathname, const char *arg, .../* (char  *) NULL */);

在這里插入圖片描述

  • ?小案例:使用 ls -a -l來替換程序代碼
#include <stdio.h>
#include <unistd.h>int main()
{printf("the program begin\n");execl("/usr/bin/ls", "ls", "-a","-l", NULL);printf("the program end\n");return 0;
}

》運行結果如下:
程序替換成功,原來的程序代碼 the program end 已經被替換成為 ls -a -l
在這里插入圖片描述


  • ?多進程版本:子進程中進行程序替換,父進程正常執行
    下面這個代碼案例說明,雖然剛開始父子進程是共享同一塊代碼的內存區域的,但是當子進程發生程序替換要對代碼進行修改時,此時OS會發生寫時拷貝,在物理內存上新建一塊內存區域,首先把父進程的代碼進行復制,然后再把子進程要替換的代碼加載進來。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>int main()
{printf("the program ...  begin\n");pid_t id =fork();// child processif (id == 0){sleep(2);execl("/usr/bin/ls", "ls", "-l", "-a", NULL);exit(123);}// father processint status = 0;pid_t wid = waitpid(id, &status, 0);if (wid > 0){printf("the father wait child  success, the child exitcode:%d\n", WEXITSTATUS(status));}printf("the program ...  end\n");return 0;
}

》運行結果如下:
在這里插入圖片描述

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

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

相關文章

ReasonRank: Empowering Passage Ranking with Strong Reasoning Ability

主要內容總結 本文提出了一種具有強推理能力的列表式段落重排序模型ReasonRank,旨在解決現有重排序模型在推理密集型場景(如復雜問答、數學問題、代碼查詢等)中表現不佳的問題,核心原因是這類場景缺乏高質量的推理密集型訓練數據。 為解決這一問題,研究團隊: 設計了自動…

不卡頓、不掉線!穩定可靠的體育賽事直播系統源碼解析

在體育和電競行業&#xff0c;實時直播系統已經成為平臺的標配。無論是 OTT、比分直播網站&#xff0c;還是綜合類體育社區&#xff0c;用戶對直播體驗的要求越來越高&#xff1a;不卡頓、不掉線、實時性強。那么&#xff0c;從技術角度出發&#xff0c;一個穩定可靠的 體育賽事…

三菱FX5U PLC訪問字變量的某一位

三菱FX5U PLC氣缸控制功能塊 三菱FX5U氣缸控制功能塊(完整ST源代碼+示例程序)_三菱fx5u標簽氣缸報警程序功能塊-CSDN博客文章瀏覽閱讀560次,點贊5次,收藏2次。如果機器包含100個氣缸,我們只需要修改數組的元素數量就可以了,效率非常的高。待續....博途PLC 面向對象系列之“…

Java大廠面試全真模擬:從Spring Boot到微服務架構實戰

Java大廠面試全真模擬&#xff1a;從Spring Boot到微服務架構實戰 面試場景&#xff1a;某互聯網大廠Java后端崗位&#xff0c;候選人謝飛機&#xff08;水貨程序員&#xff09; 第一輪&#xff1a;基礎與框架認知 面試官&#xff1a;你好&#xff0c;謝飛機&#xff0c;先簡單…

Unity游戲打包——Mac基本環境雜記

1、安裝 Homebrew若未安裝&#xff0c;在使用 brew 命令時將提示 zsh: command not found: brew安裝命令&#xff1a;/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2、更換終端默認 Shell 為 zsh查看已安裝的shell&#…

服務組件體系結構(SCA)全景解析

服務組件體系結構&#xff08;SCA&#xff09;全景解析SCA&#xff08;Service Component Architecture&#xff09;是 SOA 生態中專門用來“把服務拼起來并跑起來”的規范。它通過語言中立、協議可插拔、裝配聲明式三大能力&#xff0c;把“接口—實現—協議”徹底解耦&#x…

問:單證碩士含金量是否不足?

很多人認為花幾萬塊錢讀一個同等學歷申碩&#xff0c;含金量并沒有那么高&#xff0c;但事實卻并非如此。今天我們從證書和學習的兩個方面來聊一下同等學歷申碩的含金量到底是如何的。一、單證含金量看以下幾點&#xff1a;&#xff08;1&#xff09;國家認證與學信網可查 …

0.04% vs 0.1%:精度差一點,逆變器性能差距有多大?

一臺光伏逆變器損失的功率可能僅僅源于0.3%的MPPT效率差距。這個足以影響產品競爭力的數字&#xff0c;可能并非算法優劣&#xff0c;而在于測試源頭的精度選擇&#xff1a;是0.04%還是0.1%&#xff1f;本文通過四大測試場景的量化對比&#xff0c;揭示不同的測試精度如何影響產…

Docker Hub 鏡像一鍵同步至阿里云 ACR

&#x1f433; Docker Hub 鏡像一鍵同步至阿里云 ACR 本腳本用于 從 Docker Hub 拉取鏡像并推送到阿里云容器鏡像服務&#xff08;ACR&#xff09;。 它通過 Python 的 docker SDK 封裝了完整流程&#xff1a;拉取 → 重命名 → 登錄 → 推送&#xff0c;并在控制臺實時輸出進度…

軟考-系統架構設計師 計算機系統基礎知識詳細講解

個人博客&#xff1a;blogs.wurp.top 一、計算機系統組成與多級層次結構 1. 馮諾依曼體系結構 (核心考點) 這是所有現代計算機的理論基礎。核心思想是 “存儲程序” 。 五大部件&#xff1a;運算器、控制器、存儲器、輸入設備、輸出設備。工作流程&#xff1a;指令驅動。CP…

DLL文件丟失怎么辦?這個修復工具一鍵搞定!

軟件介紹&#xff08;文末獲取&#xff09;是不是經常遇到這種情況&#xff1a;安裝軟件時提示缺少DLL文件&#xff1f;打開游戲時出現DLL錯誤&#xff1f;或者運行程序時突然崩潰&#xff1f;今天給大家推薦一款超好用的DLL修復工具——4DDiG DLL Fixer&#xff0c;一鍵解決所…

并發容器小結及ConcurrentSkipListMap介紹——并發系列(十一)

目錄 概述 ConcurrentHashMap CopyOnWriteArrayList ConcurrentLinkedQueue BlockingQueue ConcurrentSkipListMap 設計目的 功能特性 與其他相關類對比 適用場景 概述 JDK提供的這些容器大部分在 java.util.concurrent 包中。我們這里挑選出了一些比較有代表性的并發…

藍思科技半年凈利超11億,藍思成績單怎么分析?

8月26日&#xff0c;藍思科技發布2025年半年度業績報告&#xff0c;其中&#xff0c;凈利潤11.43億元&#xff0c;同比增長32.68%。這份成績單我們該怎么分析&#xff1a;首先&#xff0c;藍思科技營收與利潤雙增長&#xff0c;成長能力持續凸顯。報告期內&#xff0c;公司營業…

【GM3568JHF】FPGA+ARM異構開發板 應用編輯及源碼下載

早期因為處理器芯片性能不夠&#xff0c;存儲空間不多以及編譯性能不夠等因素&#xff0c; 早期的開發板普遍采用交叉編譯的方式&#xff0c; 而交叉編譯的方式會有幾種缺點&#xff1a; 不能離線編譯&#xff0c; 操作麻煩&#xff0c; 環境配置復雜等 GM-3568JHF的處理器性能…

華為倉頡語言的函數初步

華為倉頡語言的函數初步函數是一段完成特定任務的獨立代碼片段&#xff0c;可以通過函數名字來標識&#xff0c;這個名字可以被用來調用函數。要特別注意&#xff0c;與C/C、Python等語言不同&#xff0c;倉頡禁止參數重新賦值——函數參數均為不可變&#xff08;immutable&…

服務初始化

目錄 1.配置yum源 2. 更新系統與安裝必備工具 3. 網絡連接驗證 4. 配置主機名 5. 同步時間 6. 配置防火墻 (兩種方式) 6.1 iptables 6.2firewalld 1.配置yum源 1. 備份原有的源文件&#xff0c;以防萬一 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.…

ICBC_TDR_UShield2_Install.exe [ICBC UKEY]

流程&#xff1a;1&#xff09;插入U盾&#xff0c;記住檢測到U盾類型&#xff0c;需要根據這個下載驅動

在線提取維基百科Wikipedia文章頁面及離線批處理Wikipedia XML Dump文件

1. 在線提取維基百科Wikipedia文章 本項目提供一個增強型 Wikipedia 概念條目抓取與摘要清洗腳本&#xff1a;支持多級回退策略 (wikipedia 庫 →wikipediaapi → 直接網頁 / REST 搜索)、智能標題匹配(精確/模糊判定)、摘要質量校驗、內容結構化抽取、斷點續跑(結果緩存)、統…

安全合規:AC(上網行為安全)--下

五、SSL移動接入方案概述1、SSL VPN概述SSL VPN是一種遠程安全接入技術&#xff0c;因為采用SSL協議而得名。因為Web瀏覽器都內嵌支持SSL協議&#xff0c;使得SSL VPN可以做到“無客戶端”部署。SSL VPN一般采用插件系統來支持各種TCP和UDP的非Web應用&#xff0c;使得SSL VPN真…

【86頁PPT】特種車行業SAP解決方案(附下載方式)

篇幅所限&#xff0c;本文只提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2501_92808859/91716699 資料解讀&#xff1a;《【86頁PPT】特種車行業SAP解決方案》 ??詳細資料請看本解讀文章的最后內容?? 作為特種車行業信息化建…