UNIX 新手一问 关于fork 和 2进程同时写一文件出现的问题
下面一段程序运行会死!   请问是什么原因呢? 
 #include    <sys/types.h>  
 #include    <sys/stat.h>  
 #include    <fcntl.h>  
 #include    <stdio.h>  
 #include    <unistd.h>    
 typedef   int   XFILE; 
 typedef   enum   _BOOL{FALSE,TRUE}   BOOL; 
 BOOL   IsFileCanbeSeek(XFILE   file);   
 const   char   buf1[]= "abcdefghijklmnopqrstuvwxyz\n "; 
 const   char   buf2[]= "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n "; 
 const   char   buf3[]= "--------------------------\n "; 
 int   count=0; 
 char   buf4[8]; 
 int   main(void) 
 {                      
 	XFILE   file=open( "testfile.t ",O_RDWR|O_CREAT|O_TRUNC); 
                            write(file,buf3,sizeof(buf3)); 
 	int   pid,cpid,cpid2; 
 	pid=fork(); 
 	if(pid==0)   cpid=getpid(); 
                            if(cpid==getpid())   printf( "%d\n ",cpid); 
                            if(cpid!=getpid())   pid=fork(); 
                            if(pid==0&&cpid!=getpid())cpid2=getpid();//............. 
                            if(pid!=0)exit(0); 
                            int   i=0; 
                            for(i=0;i <20;i++) 
                            { 
                            printf( "%d-------%d---------%d\n ",getpid(),cpid,cpid2); 
                            if(cpid==getpid())    
                            {                
                            	sprintf(buf4, "%d\t ",count); 
                            	count++; 
                            	write(file,buf4,sizeof(buf4)); 
                            	write(file,buf1,sizeof(buf1)); 
                            	sleep(1); 
                            } 
                               if(cpid2==getpid()) 
                            { 
                            	sprintf(buf4, "%d\t ",count); 
                            	count++; 
                            	write(file,buf4,sizeof(buf4)); 
                            	write(file,buf2,sizeof(buf1)); 
                            	sleep(1); 
                            } 
                            } 
 	close(file); 
 } 
------解决方案--------------------执行没问题.   
 不过你fork那逻辑太混乱了,还有点问题.   
 如果你那死掉的话,可能是cpid,cpid2的初值的问题.赋初值再试一下.   
 [root@shwhg tes