在一个进程中,创建一个子线程。
主线程负责:向文件中写入数据
子线程负责:从文件中读取数据
要求使用线程的同步逻辑,保证一定在主线程向文件中写入数据成功之后,子线程才开始运行,去读取文件中的数据
#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;
}
运行现象