我在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;
}