高分求助有关利用Linux的系统调用read()实现
做一个简单的linux系统下音频的输入,需要调用 
 int   read(int   fd,   char   *buf,   size_t   count);来实现语音从麦克风的输入,但是一般的做法就是单独设置一个缓冲区例如:buffer[100],但是我想作一个循环队列来实现,能让录音源源不断的输入,在输入的同时进行其他的对语音的分析,分析完的语音就可以抛弃,这样循环队列中永远不会满,但是我遇到的困难是你采用read的时候要输入缓冲区的地址以及字节的大小,如果循环队列的话如何实现read调用永不停止一直在输入,循环队列的front指针和rear指针如何配合以及read调用count如何选择,因为你的count一旦指定,当read完count个字节数后,系统read调用就停止,这是我遇到的困难,那位高手可以说一下思路。 
 比如说我的循环队列是 
 tyedef   struct{ 
 char   *   base; 
 int   front; 
 int   rear; 
 }sq; 
 sq.base=(char   *)malloc(MAXSIZE); 
 那系统调用read()如何实现这一功能 
------解决方案--------------------sq.front=0; 
 sq.rear=MAXSIZE;   
 while ( 1 ) 
 { 
    read ( fd , buf , count ); 
    if ( sq.front+count > = sq.rear ) 
          sq.front = 0; 
    memcpy ( sq.base+sq.front , buf , count ); 
    sq.front += count;      
 } 
 这样行不? 
------解决方案--------------------楼上做的很对。最好初始化一下链表,最开始的时候头指向尾,还要做一个循环判断,万一尾巴赶上了头要做一些处理