为什么不执行exec命令之前的语句?

时间:2019-08-29 06:35:01

标签: c exec

我在C中使用execvp系统调用来执行程序,但是该命令无法按照我认为的方式工作。我知道执行此命令后,进程会自行替换。我了解为什么它之后的命令无法执行,但是在以下代码中,即使printf命令之前的execvp语句也无法执行。我不明白为什么会这样。

当我在执行fork命令之前execvp处理该过程(在代码中注释掉)时,父进程将同时执行两个printf语句。

//execDemo.c 

#include<stdio.h> 
#include<stdlib.h> 
#include<unistd.h> 

int main() { 
        printf("Hello");
        char *args[]={"./EXEC",NULL}; 
        // if(fork() == 0)
            execvp(args[0],args); 

        printf("Ending-----"); 

    return 0; 
} 

////////////////////////////

//EXEC.c 

#include<stdio.h> 
#include<unistd.h> 

int main() 
{ 
    int i; 

    printf("I am EXEC.c called by execvp() "); 
    printf("\n"); 

    return 0; 
} 


0 个答案:

没有答案