为什么不打印子进程的最后一行?

时间:2015-08-31 03:06:00

标签: c fork exit wexitstatus

#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");
    }
}

编译此代码时,其他的最后一行不会打印,我不知道原因。

1 个答案:

答案 0 :(得分:3)

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

  

exec()系列函数用新的过程映像替换当前过程映像。   ....

     

返回值

     

exec()函数仅在发生错误时返回。回报   value为-1,并设置errno以指示错误。