gpt4 book ai didi

c - 为什么这个 printf 语句没有被执行

转载 作者:行者123 更新时间:2023-11-30 16:47:31 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdlib.h>

int main( int argc, char *argv[] ) {
printf("Hello, to the Simulation world,\n");

int pid = fork();
if(pid < 0) {
fprintf(stderr,"Oops something went wrong\n");
}else if (pid == 0){
printf("I'm child, and I do all the work, \n");
printf("This isn't printed");
// Any printf statement over here isn't executed \\

execvp(argv[1], argv);
} else {
wait(&pid);
printf("I'm Parent and I do nothing, but I will wait till my child dies.\n");
}
return 0;
}

不显示 else if printf 语句下面的任何 printf 语句,

使用的编译器:gcc版本6.3.1 20170306(GCC)

操作系统:基于Linux,

我的假设:stderr 正在用自己的数据替换当前行输出,但是只要输入位于自己的行中,例如 printf("This Line is Printed\n"),我就可以看到输出。但如果我这样写 printf("This Line isn't Printed").

只有我一个人会这样吗?或者操作系统的一些渲染问题。

我的上述程序的输出:

Output

最佳答案

尝试在 execvp(argv[1], argv); 之前使用 fflush(NULL);

来自 man fflush:

For output streams, fflush() forces a write of all user-space buffered data for the given output or update stream via the stream's underlying write function.

关于c - 为什么这个 printf 语句没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43326179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com