linux下exec系列(一)
fork()是用于建立進(jìn)程的手段之一,但是fork()只能建立相同程序的副本。幸運(yùn)的是,Linux系統(tǒng)還提供了系統(tǒng)調(diào)用exec系列。它可用于新程序的運(yùn)行。
如果exec調(diào)用成功,調(diào)用進(jìn)程將被覆蓋,然后從新程序的入口開始執(zhí)行。這樣就產(chǎn)生了一個(gè)新的進(jìn)程,但是它的進(jìn)程標(biāo)識(shí)符與調(diào)用進(jìn)程相同。這就是說,exec沒有建立一個(gè)與調(diào)用進(jìn)程并發(fā)的新進(jìn)程,而是用新進(jìn)程取代了原來的進(jìn)程。所以,對(duì)exec調(diào)用成功后,沒有任何數(shù)據(jù)返回,這與fork()不同。
下面給出了exec系列調(diào)用在Linux系統(tǒng)中unistd.h中的函數(shù)聲明:
int execl(const char *path, const *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, ..., char* const envp[]); int execv(const char *path, char* const argv[]); int execvp(const char *file, char* const argv[]);
下面來看一個(gè)exec函數(shù)的示例:
運(yùn)行結(jié)果:
注意到了嗎:沒有“printf("------End of execl()\n"); “的輸出噢。這正好說明了:exec沒有建立一個(gè)與調(diào)用進(jìn)程并發(fā)的新進(jìn)程,而是用新進(jìn)程取代了原來的進(jìn)程。
總結(jié)
以上是生活随笔為你收集整理的linux下exec系列(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巨杉数据库入选Gartner报告,中国数
- 下一篇: Linux下检测网络状态是否正常