代码之家  ›  专栏  ›  技术社区  ›  andrewg

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

  •  5
  • andrewg  · 技术社区  · 11 年前

    我得到一个“嗨!”的输出。为什么这不是打印“某物”?

    #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) )

    1 回复  |  直到 11 年前
        1
  •  8
  •   Ed Heal    11 年前

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

    i、 e.添加

    fflush(stdout)
    

    之后 printf (或添加 \n 到 输出函数 )