linux下exec系列(一)
生活随笔
收集整理的這篇文章主要介紹了
linux下exec系列(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
fork()是用于建立進程的手段之一,但是fork()只能建立相同程序的副本。幸運的是,Linux系統還提供了系統調用exec系列。它可用于新程序的運行。
如果exec調用成功,調用進程將被覆蓋,然后從新程序的入口開始執行。這樣就產生了一個新的進程,但是它的進程標識符與調用進程相同。這就是說,exec沒有建立一個與調用進程并發的新進程,而是用新進程取代了原來的進程。所以,對exec調用成功后,沒有任何數據返回,這與fork()不同。
下面給出了exec系列調用在Linux系統中unistd.h中的函數聲明:
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[]);
下面來看一個exec函數的示例:
運行結果:
注意到了嗎:沒有“printf("------End of execl()\n"); “的輸出噢。這正好說明了:exec沒有建立一個與調用進程并發的新進程,而是用新進程取代了原來的進程。
總結
以上是生活随笔為你收集整理的linux下exec系列(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巨杉数据库入选Gartner报告,中国数
- 下一篇: Linux下检测网络状态是否正常