为什么exevp之前的printf不是运行?
Why is printf before exevp not running?
我得到 "hi!" 的输出。为什么这不也打印 "something"?
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
char* program_name = "echo";
char* args[]= {program_name,"hi!",NULL};
printf("something");
execvp(program_name,args);
return 0;
}
我知道我不是先创建子进程。如果我取出 execvp 行,它会按预期工作。诡异的。 (注:"echo"指https://en.wikipedia.org/wiki/Echo_(command))
字符串在 io 缓冲区中 - 所以拉动链并刷新缓冲区
即添加
fflush(stdout)
在 printf
之后(或将 \n
添加到 printf
)
我得到 "hi!" 的输出。为什么这不也打印 "something"?
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
char* program_name = "echo";
char* args[]= {program_name,"hi!",NULL};
printf("something");
execvp(program_name,args);
return 0;
}
我知道我不是先创建子进程。如果我取出 execvp 行,它会按预期工作。诡异的。 (注:"echo"指https://en.wikipedia.org/wiki/Echo_(command))
字符串在 io 缓冲区中 - 所以拉动链并刷新缓冲区
即添加
fflush(stdout)
在 printf
之后(或将 \n
添加到 printf
)