Head First C 第九章 進程與系統調用 exec函數
系統調用
C程序不管作什麼,都要靠操做系統。若是它想與硬件打交道,就要進行系統調用 系統調用是操做系統內核的函數。git
什麼是內核? 在大部分計算機上,系統調用就是系統內核中的函數。github
exec函數
exec函數經過運行其餘程序來替換當前進程。數組
進程是程序在存儲器上的一個實例。app
exec函數有不少,能夠分紅兩種,列表函數和數組函數函數
- 列表函數以參數列表的形式接收命令行參數。
- 包含
execl(),execle(),execlp()
。
- 程序:第一個參數告訴exec()將運行什麼程序,對於execl(),execle()來講,是程序的完整路徑,對execlp()來講,是命令的名字。
- 命令行參數:你須要依次列出想使用的命令行參數,別忘了,第一個命令行參數必須是程序名,也就是說,execl系的函數,前兩個參數都是程序名。
- NULL:要在最後一個命令行參數後加上NULL,告訴函數沒有其餘參數了。
- 環境變量:若是有的話。若是是execle(),則能夠傳遞一個環境變量字符串數組
{"POWER=4","JUICE=peach and apple",NULL}
注意環境變量字符串數組也要以NULL結尾。
- 數組函數以數組的形式接收命令行參數。
- 包含
exev(),exevc(),exevp()
。
- 跟列表函數不一樣之處在於,傳遞命令行參數的形式是數組。
- exec函數中l v e p表明的含義
含義 |
字符 |
參數列表 |
l |
參數數組/向量 |
v |
根據PATH查找 |
p |
環境變量 |
e |
- exec()函數調用成功後,舊的程序在exec()語句以後的代碼將不會執行。
代碼
exec function sample操作系統