小编Jam*_*s G的帖子

分叉过程每次打印的方式不同

我有一段代码打印出一次分叉的PID,只是一个基本的用户输入的东西,但每次我运行脚本时,有时它按预期运行,它都在一个命令中打印出来,然后下一次打印子进程它是PID,它在下一行上执行,并使终端处于一个状态,您需要按Enter键才能继续.我已经研究过这个网站,关于人们在什么都不知道的情况下,我已经在任何地方添加,但我仍然无法让它工作.

我的代码:

#include <unistd.h>
#include <stdio.h>
#include "sys/types.h"
int main(){
int pid;
int userInput;

    printf("Please enter a number: ");
    userInput = getchar();

    printf("\nYou entered: ");
    putchar(userInput);
    printf ("\n");
    fflush(0);

    pid = fork();
    if (0 == pid)
    {
        printf ("I am the child process, my PID is %d \n", getpid());
        fflush(0);
    }
    else
    {
        printf ("I am the parent process, my PID is %d \n", getpid());
        fflush(0);
    }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这就是我运行几次时会发生的事情:

有人可以指出我出错的地方以及如何纠正它?

谢谢!

c++ fork flush

2
推荐指数
1
解决办法
55
查看次数

标签 统计

c++ ×1

flush ×1

fork ×1