linux操作系统之exec函数族
當我們想在進程中執(zhí)行另外一個函數(shù)或程序時,可以使用exec函數(shù)。進程調(diào)用exec函數(shù),則該進程中用戶空間所有代碼和數(shù)據(jù)會完全被新程序替換,但是不會創(chuàng)建新進程,因此進程id不會發(fā)生改變。
函數(shù)族的頭文件:unistd.h
l:list(命令行參數(shù))? p:path(環(huán)境變量)? ? v:vector(命令行參數(shù)數(shù)組)? ?e:environment(環(huán)境變量)
(1)execlp函數(shù)
函數(shù)原型:int execlp(const char*file,const char*arg,...) ;成功:無返回,失敗:返回-1
函數(shù)功能:借助PATH變量加載一個進程(常用于調(diào)用系統(tǒng)程序)
函數(shù)參數(shù):參數(shù)1是要加載的可執(zhí)行程序的名字,配合環(huán)境變量使用,如果在環(huán)境變量中沒有找到,返回-1;參數(shù)2表示命令行參數(shù)(命令+參數(shù)列表)(在這個調(diào)用中,由于系統(tǒng)程序的源文件未知,因此對參數(shù)2 的命令要求可以隨意,即第二個參數(shù)可以隨意寫。系統(tǒng)不會報錯)
如? execlp("ls","ls","-a","-l",NULL);
? ? ?execlp("ls","sdsffdfd","-a","-l",NULL);
(2)execl函數(shù)
函數(shù)原型:int execl(const char*file,const char*arg,...);成功:無返回,失敗:返回-1
函數(shù)功能:通過可執(zhí)行文件+程序名+命令參數(shù)來執(zhí)行;
函數(shù)參數(shù):參數(shù)1是可執(zhí)行文件的路徑,參數(shù)2是文件程序名+命令參數(shù)。
如:add是add.c編譯之后的可執(zhí)行文件
execl("./add","add/c",NULL);
(3) execvp函數(shù)
函數(shù)原型:int execvp(cosnt char *file,const char*argv[ ]);
函數(shù)功能:加載一個程序,自定義環(huán)境變量env
函數(shù)參數(shù):參數(shù)1是命令的路徑,參數(shù)2是變參函數(shù),表示命令行參數(shù),以NULL結(jié)尾
如 char *argv[]={"ls","-l",-"a",NULL);
execvp("/bin/ls",argv);
(4)exec函數(shù)族的其他函數(shù)之間聯(lián)系
總結(jié)
以上是生活随笔為你收集整理的linux操作系统之exec函数族的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都大熊猫繁育研究基地学生票怎么买
- 下一篇: 校花前传之很纯很暧昧剧情介绍