分享一段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 条评论) “” |