分享一段Linux系统下保存数据有问题的C代码

分享一段Linux系统下的数据采集中的部分有问题代码,代码经过改写的。大家没有事,可以看看。

全局变量

int m_saveFileid1=0,m_saveFileId2=0;//打开的文件描述符char acFileName1[150]=”xxx/xxx/test1.txt”;//保存的文件,char acFileName2[150]=”xxx/xxx/test2.txt”;#define PRITY_data 20int m_changeFile1=1,m_changeFile2=1;//是否切换文件
//线程1void thread_read1(){  while(1){    if(m_changeFile1==1)    {      if(m_saveFileid1<=0)      {        close(m_saveFileid1);      }      saveFileid1=open(acFileName1, O_WRONLY | O_CREAT,S_IRUSR);      changeFile1=0;     }     if(m_saveFileid1>=0)     {       //写文件       char msg[200]=”thread_read1 write data! \r
”;       write(m_saveFileid1,msg,200);     }  }}


//线程2void thread_read2(){  While(1)  {    if(m_changeFile2==1)    {      if(m_saveFileid2<=0)      {      close(m_saveFileid2);      }      saveFileid2=open(acFileName2, O_WRONLY | O_CREAT,S_IRUSR);      changeFile2=0;    }    if(m_saveFileid2>=0)    {      //写文件      char msg[200]=”thread_read2write data! \r
”;      write(m_saveFileid2,msg,200);     }   }}
//线程3,在这篇文章中不用关心 切文件的线程void thread_changedfile(){//主要是达到切换文件条件时,把标志位m_changeFile1=1;  m_changeFile2=1;  //都赋值为1。//及改变acFileName1,acFileName2值。}

Demo

void main(){  int thread_id=0;  if (create_rt_thread(&thread_id,thread_read1,NULL,SCHED_RR,PRITY_data))  {    printf("Creating thread_read1 thread failed
",errno);    return ;  }  if (create_rt_thread(&thread_id,thread_read2,NULL,SCHED_RR,PRITY_data))  {    printf("Creating thread_read2 thread failed
",errno);    return ;  }  if (create_rt_thread(&thread_id,thread_changedfile,NULL,SCHED_RR,PRITY_data))  {    printf("Creating thread_changedfile thread failed
",errno);    return ;  }}


上面的代码主要作用是开启两个保存不同数据的线程,再开一个用来判读切换文件的线程。但是以上代码并不能实现我们要的功能,或者说有问题。 发现问题的朋友,我们可以留言讨论。这个问题指不定你们也可能遇到。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章