【发布时间】:2018-09-24 18:29:39
【问题描述】:
我有一段代码可以在分叉后打印出 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;
}
当我运行它几次时会发生这种情况:
有人能指出我哪里出错以及如何改正吗?
谢谢!
【问题讨论】:
-
请注意,
fflush(0)是未定义的行为。fflush()takes aFILE *参数,0是NULL指针常量。 -
这看起来像 C.
-
"无法让它工作。" 到底是什么你想达到什么目的?