#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<error.h>
#include<unistd.h>
int main(int argc, const char *argv[])
{
int fd=open(argv[1],O_RDWR|O_CREAT|O_TRUNC,0666);//以读写打开
size_t num_read;
if(fd<0)
{
perror("fail");
return -1;
}
pid_t pid=fork();
if(pid<0)
{
perror("fail");
return -1;
}else if(pid>0)
{
char input_buf[1024]={0};
while(1){
fflush(stdout);
num_read=read(STDOUT_FILENO,input_buf,sizeof(input_buf));
int size=lseek(fd,0,SEEK_END);
write(fd,input_buf,num_read);
lseek(fd,size,SEEK_SET);
if(strncmp(input_buf,"quit\n",4)==0)
{
break;
}
}
}else if(pid==0)
{
char output_buf[1024]={0};
while(1){
usleep(200);
memset(output_buf,0,sizeof(output_buf));
num_read= read(fd,output_buf,sizeof(output_buf));
write(STDOUT_FILENO,output_buf,num_read);
num_read = 0;
}
}
close(fd);
return 0;
}
IO作业
于 2023-04-12 20:32:02 首次发布