小编Ion*_*utC的帖子

fork()和scanf()如何一起工作?

我试着看看如果我用键盘读取东西会发生什么,而我有多个进程使用fork()(在我的情况下有两个孩子和一个父亲)我发现了以下问题:我需要告诉父母等待孩子的进程,否则程序行为奇怪.
我做了一个研究,我发现问题在于父母,他需要等待孩子的过程结束,因为如果父母的过程首先以某种方式结束他关闭了STDIN,我是对的吗?但我也发现每个进程都有一个STDIN的副本,所以我的问题是:

为什么它以这种方式工作,为什么只有父有STDIN的问题和孩子没有,我的意思是为什么如果孩子的过程先结束不影响STDIN但是如果父进程首先结束它会影响STDIN吗?

  • 这是我的测试:

    1. 我跑的程序,而不等待()后,我输入了一些程序停止,但后来我按下输入从printf的两次,另两个消息()出现了. 这是图片.

    2. 当我用wait()运行程序时,一切正常,每个进程分别调用scanf()并读取不同的数字. 这是图片.

c linux stdin fork scanf

5
推荐指数
1
解决办法
1158
查看次数

标签 统计

c ×1

fork ×1

linux ×1

scanf ×1

stdin ×1