首頁  >  文章  >  電腦教學  >  Linux exec指令手冊

Linux exec指令手冊

王林
王林轉載
2024-02-18 16:42:13683瀏覽

Linux exec命令手册

功能描述

exec指令在Linux中用來呼叫並執行指定的指令。通常在shell腳本中使用exec指令來執行其他指令。當在目前終端機中使用exec命令時,指定的命令執行完畢後會取代目前進程,而不是建立一個新的子進程。

指令語法

exec [选项]

選項意義

選項 意義
-c 使用一個空環境來執行
-a shell會將名字當作零參數傳遞給執行的指令
-l 在shell的開頭放置一個破折號參數傳遞給指令

參考實例

實例1

// 首先使用echo命令将文本“www.linuxyz.cn”进行输出:
[root@bunian ~]# echo www.bunian.cn
www.bunian.cn

// 然后再使用exec命令调用echo命令输出同样的信息,并且对输出的信息进行对比,输入指令如下所示:
[root@bunian ~]# exec -c echo www.bunian.cn
www.bunian.cn

// 通过比较两者执行后的结果来看,所实现的功能是相同的,即使用exec命令调用echo命令成功。

實例2

// 查找bunian.txt 并备份为bunian.txt.bak
[root@bunian ~]# find /test -name "bunian.txt" -exec cp {} {}.bak \;

知識擴充

一、系統呼叫 exec 是以新的進程去代替原來的進程,但進程的PID保持不變。因此,可以這樣認為,exec系統呼叫並沒有建立新的進程,只是取代了原來進程上下文的內容。原進程的程式碼段,資料段,堆疊段被新的進程所取代。

一個行程主要包括以下幾個面向的內容:

  • 一個可以執行的程式
  • 與進程相關聯的全部資料(包括變量,內存,緩衝區)
  • 程式上下文(程式計數器PC,儲存程式執行的位置)
  • 二、exec是一個函數簇,由6個函數組成,分別是以excl和execv打頭的。

    執行exec系統調用,一般都是這樣,用fork()函數新建立一個進程,然後讓進程去執行exec調用。我們知道,在fork()建立新進程之後,父進各與子進程共享程式碼段,但資料空間是分開的,但父進程會把自己資料空間的內容copy到子進程中去,還有上下文也會copy到子進程中去。而為了提高效率,採用一種寫時copy的策略,即創建子進程的時候,並不copy父進程的地址空間,父子進程擁有共同的地址空間,只有當子進程需要寫入數據時(如向緩衝區寫入資料),這時候會複製位址空間,複製緩衝區到子程序中去。從而父子進程擁有獨立的位址空間。而對於fork()之後執行exec後,這種策略能夠很好的提高效率,如果一開始就copy,那麼exec之後,子進程的資料會被放棄,被新的進程所取代。

    以上是Linux exec指令手冊的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:mryunwei.com。如有侵權,請聯絡admin@php.cn刪除