c - 终端中的 printf c 问题

c - printf c issues in terminal

我的主程序中有以下代码:

//testing with fork
printf("I am process: %d\n", getpid());
pid_t pid = fork();
printf("Now I am process: %d\n", getpid());
printf("fork returned %d\n", pid);
if(pid == 0){
    printf("I am child %d\n", getpid());
}

但是我终端上的输出是这样的: terminal output pic

我 运行 我的程序,参数为 'config_file.txt' 正如你在第一行看到的那样,其余部分打印正常,直到它碰到叉子,我的 cmd 行来了介于两者之间...关于为什么会这样或我如何解决它的任何想法?代码有问题吗?我只是在学习一个简单的分叉教程。

编辑: 此外,在 运行 之后,我的程序挂在那里,我必须按回车键才能恢复我的 cmd 行。

发生的情况是 parent 进程在 child 进程之前完成。当 parent 完成时显示提示,但是由于 child 仍然是 运行 它继续将输出打印到控制台。

如果您希望 parent 等到 child 完成,请使用 wait() 函数:

printf("I am process: %d\n", getpid());
pid_t pid = fork();
printf("Now I am process: %d\n", getpid());
printf("fork returned %d\n", pid);
if(pid == 0){
    printf("I am child %d\n", getpid());
} else {
    wait(NULL);
}