为什么exevp之前的printf没有运行?

时间:2015-09-13 07:55:31

标签: c unix exec system-calls

我得到" hi!"的输出。为什么这不打印"某事"?

#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行,它会按预期工作。奇怪的。 (注意:&#34; echo&#34;指https://en.wikipedia.org/wiki/Echo_(command)

1 个答案:

答案 0 :(得分:7)

字符串在io缓冲区中 - 所以拉链并刷新缓冲区

即。添加

fflush(stdout)

printf之后(或\n添加printf