Head First C 第九章 進程與系統調用 exec函數

Head First C 第九章 進程與系統調用 exec函數

系統調用

C程序不管作什麼,都要靠操做系統。若是它想與硬件打交道,就要進行系統調用 系統調用是操做系統內核的函數。git

什麼是內核? 在大部分計算機上,系統調用就是系統內核中的函數。github

exec函數

exec函數經過運行其餘程序來替換當前進程數組

進程是程序在存儲器上的一個實例。app

exec函數有不少,能夠分紅兩種,列表函數數組函數函數

  1. 列表函數以參數列表的形式接收命令行參數。
    1. 包含execl(),execle(),execlp()
    2. 程序:第一個參數告訴exec()將運行什麼程序,對於execl(),execle()來講,是程序的完整路徑,對execlp()來講,是命令的名字。
    3. 命令行參數:你須要依次列出想使用的命令行參數,別忘了,第一個命令行參數必須是程序名,也就是說,execl系的函數,前兩個參數都是程序名。
    4. NULL:要在最後一個命令行參數後加上NULL,告訴函數沒有其餘參數了。
    5. 環境變量:若是有的話。若是是execle(),則能夠傳遞一個環境變量字符串數組{"POWER=4","JUICE=peach and apple",NULL}注意環境變量字符串數組也要以NULL結尾。
  2. 數組函數以數組的形式接收命令行參數。
    1. 包含exev(),exevc(),exevp()
    2. 跟列表函數不一樣之處在於,傳遞命令行參數的形式是數組。
  3. exec函數中l v e p表明的含義
含義 字符
參數列表 l
參數數組/向量 v
根據PATH查找 p
環境變量 e
  1. exec()函數調用成功後,舊的程序在exec()語句以後的代碼將不會執行。
代碼

exec function sample操作系統

相關文章
相關標籤/搜索