前言
在很多時候,建立一個子程式的目的,僅是讓它去執行一些其他已經編譯好了的程式。
本文將介紹其簡單實現方法。
execl 函式族
為何稱為函式族 --- 是因為根據其引數格式,是否傳遞環境變數等,execl 函式有幾個變體。各種變體的原型請讀者自行參考資料。
但它們的作用都一樣,那就是用一個全新的程式替換當前程式的正文,資料,堆和棧。
下面的程式以 execl 函式進行示範:新建一個子程式,並在子程式中呼叫編譯好的 hello world 程式。
程式碼實現
1 #include <stdio.h> 2 #include <unistd.h> 3 4 int main (void) { 5 6 int pid; 7 8 if ((pid = fork()) == 0) { 9 10 // 需要留心的是引數的結尾必須跟上一個 (char *)0 表示引數結束 11 execl ("/home/fangmeng/hello", "hello", (char *)0); 12 } 13 else if (pid < 0) { 14 printf("建立子程式失敗\n"); 15 return 1; 16 17 } 18 else { 19 int *status; 20 wait(status); 21 } 22 23 return 0; 24 }
執行測試
小結
記得隨時清理掉殭屍子程式。