Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 57159

Summary: a error has been occured using fork() function while the relust is output though pipe.
Product: [Retired] Red Hat Linux Reporter: Need Real Name <zhoucm>
Component: gccAssignee: Jakub Jelinek <jakub>
Status: CLOSED NOTABUG QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0   
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2001-12-06 05:19:40 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
source code and result of test none

Description Need Real Name 2001-12-06 05:11:54 UTC
Description of Problem:
   using fork() function to create chile process;the result of #./foo is 
different from #./foo >foo1.c

Version-Release number of selected component (if applicable):


How Reproducible:
It is so easy a C programe,compile and run the source code .that's all.


Steps to Reproduce:
1. #gcc -g -o foo foo.c
2. #./foo
3. #./foo >foo1.c

Actual Results:
Two  results is so much different.

Expected Results:
Two results are  no difference.

Additional Information:
	the source code ,the two relusts with email .

Comment 1 Need Real Name 2001-12-06 05:19:35 UTC
Created attachment 39828 [details]
source code and result of test

Comment 2 Jakub Jelinek 2001-12-06 09:28:07 UTC
Note more appropriate forum for this would be some unix basics news forum,
not a bug report.

Essentially what happens is that you use a buffered stdio without flushing,
so you really cannot wonder that if its output was only buffered not printed
before fork, that the buffered output will be flushed both in the parent
and in the child. E.g. fflush(stdout); before the fork() calls could do the
trick.