#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main(int argc, const char *argv[])
{
int fd;
char buf[1024]={0};
pid_t pid;
fd=open(argv[1],O_RDWR|O_CREAT|O_TRUNC,0666);
pid = fork();
if(pid<0)
{
perror("file to fork");
return -1;
}
else if(pid>0)
{
while(1)
{
memset(buf,0,sizeof(buf));
fgets(buf,sizeof(buf),stdin);
if(!strncmp(buf,"quit",4))
break;
int n=write(fd,buf,sizeof(buf));
lseek(fd,-n,SEEK_CUR);
}
}
else if(pid==0)
{
while(1)
{
sleep(2);
memset(buf,0,sizeof(buf));
int size=read(fd,buf,sizeof(buf));
if(size == 0)
continue;
printf("read %ld bytes:%s\n",strlen(buf),buf);
}
}
close(fd);
return 0;
}