#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
int main(int argc, const char *argv[])
{
char buf[1024] = {0}; //定义足够大的空间
char test[1024] = {0};
int fd; //文件表示符
pid_t pid;
if(argc != 2) //需要输入两个参数 a.out filenanme
{
fprintf(stderr,"usage:%s\n",argv[0]);
return -1;
}
printf("prosses is running...\n");
fd = open(argv[1],O_RDWR | O_CREAT | O_TRUNC,0666); //读写打开
if(fd < 0)
{
perror("FAIL TO OPEN");
return -1;
}
pid = fork();
if(pid < 0)
{
perror("FAIL TO FORK");
return -1;
}
else if(pid == 0)
{
//子
while(1)
{
memset(test,0,sizeof(test));
usleep(200);
read(fd,test,sizeof(test));
if(test[0] == 0) continue;
printf("Read in %ld betys :%s\n",strlen(test),test);
if( !strncmp(test,"quit",4) ) break;
}
}
else
{
父
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);
}
}
close(fd);
return 0;
}