1.用文件IO以读写的方式打开一个文件
2.利用fork()函数创建子进程
3.父进程循环从键盘输入数据写入到文件上,子进程利用usleep(200)休眠200us,然后循环从文件中读取数据打印到屏幕上,如果父进程输入quit,父子进程结束
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>
int main(int argc, const char *argv[])
{int file_desc = open(argv[1],O_RDWR | O_CREAT | O_TRUNC,0666);
if(file_desc < 0)
{
perror("Fail to open ");
return -1;
}
pid_t pid = fork();
char buf[64] = {0};
int size = 0;
if(pid < 0)
{
perror("Fail to fork");
return -1;
}
else if(pid >0)//
{
while(1)
{
fgets(buf,sizeof(buf),stdin);
size = lseek(file_desc,0,SEEK_END);
write(file_desc,buf,sizeof(buf));
lseek(file_desc,size,SEEK_SET);
if(!strncmp(buf,"quit",4))
break;
}
}
else if(pid == 0)
{
while(1)
{
usleep(200);
int count = read(file_desc,buf,sizeof(buf));
//printf("%d",count);
if(count == 0)
continue;
printf("Read %ld bytes:%s\n",strlen(buf),buf);
if(!strncmp(buf,"quit",4))
{
break;
}
memset(buf,0,sizeof(buf));
}
}
close(file_desc);
return 0;
}
输出结果: