+ -
当前位置:首页 → 问答吧 → 父子进程的问题

父子进程的问题

时间:2011-12-14

来源:互联网

#include   <stdio.h>
#include   <unistd.h>
#include   <fcntl.h>
#include   <stdlib.h>
#include   <string.h>
#include   <strings.h>

int   main()
{
int   fd=open( "a.txt ",   O_RDWR|O_CREAT|O_TRUNC,0666);
if(fork()==0){
char   c= 'A ';
for(;   c <= 'Z ';   c++){
write(fd,   &c,   1);
sleep(1);
}
close(fd);
exit(0);
}
int   i=0;
char   str[10]={};
for(;   i <26;   i++){
bzero(str,   sizeof(str));//memset(str,   0,   sizeof(str));
sprintf(str,   "%d ",   i);
write(fd,str,strlen(str));//我想知道为什么打印的时候是A01B2C3D.....
  难道不是交互打印的吗?
sleep(1);
}
close(fd);
}

作者: adfsf   发布时间: 2011-12-14

交互的挺好的。

作者: qq120848369   发布时间: 2011-12-14

这里父子进程没法保证是交互写入文件的,sleep根本不能控制,如果一定要实现交叉打印的要求(A0B1C2D3这种),你需要在父子进程之间同步。

作者: xtrx   发布时间: 2011-12-14