2015-08-31 67 views
-2
#include <stdlib.h> 
#include <sys/wait.h> 
#include <unistd.h> 
#include <stdio.h> 


int main() { 
    pid_t pid; 
    int status = -1; 

    if ((pid = fork()) != 0) { 
     printf("Father process wait child PID=%d\n", pid); 
     wait(&status); 
     printf("Child finish with status: %d\n",WEXITSTATUS(status)); 
     exit(0); 
    } 
    else { 
     printf("Child process running...\n"); 
     execl("/bin/ls","ls", "-la", NULL); 
     printf("Child ending...\n"); 
    } 
} 

編譯此代碼時else的最後一行不打印,我不知道爲什麼。爲什麼不打印子進程的最後一行?

+5

您是否真的閱讀過'execl'的手冊頁?它告訴你所有你需要知道的 - 它不會成功。 – kaylum

回答

3

http://linux.die.net/man/3/execl

的EXEC()函數系列有一個新的進程圖像替換當前的進程圖像。如果發生錯誤 ....

返回值

的EXEC()函數只返回。返回 值爲-1,並將errno設置爲指示錯誤。