IO 5.10

 在一个进程中,创建一个子线程。
主线程负责:向文件中写入数据
子线程负责:从文件中读取数据
要求使用线程的同步逻辑,保证一定在主线程向文件中写入数据成功之后,子线程才开始运行,去读取文件中的数据


#include <myhead.h>
 int flag=0;
 void *run(void* arg){
     while(1){
         if(flag==1){break;}
     }
         int rfd=open("./assign.text",O_RDONLY);
         char buf[20]={0};
         //while(1){
         int retval=read(rfd,buf,sizeof(buf));
         if(retval==-1){
             //break;
             exit(1);
         }
         printf("Child thread read:%s \n",buf);
         //fflush(buf);
     //  }
         flag=0;
         close(rfd);
         sleep(1);
 
     }
 
 int main(int argc, const char *argv[])
 {
     pthread_t id;
     if(pthread_create(&id,0,run,0)!=0){
         perror("pthread_create");
             return -1;
     }
     while(1){                                                                                                                                         
         while(1){
             if(flag==0){break;}
         }
         int wfd=open("./assign.text",O_WRONLY|O_CREAT|O_TRUNC,0664);
         printf("please enter:");
         char buf[128];
         scanf("%s",buf);
         while(getchar()!='\n');
         write(wfd,buf,128);
 
         close(wfd);
         flag=1;
         sleep(3);
     }
     pthread_join(id,0);
     return 0;
 }
                                                                                                                                                       

运行现象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值