一个不大明白的问题

唐先生及各位大虾,在各位的帮助下小弟的任务已经接近完成,看到胜利的曙光了,在这里小弟先行谢过了。
现在还有一个我感觉蛮奇怪的问题,以下是小弟代码的框架:

头文件略

DMA_Start()
{
… //DMA初始化的一些动作

SIGEV_INTR_INIT(&event );
pthread_create (thread, NULL,PCI_ISR_0, NULL);

}

DMA_Status( int *status, int *count )
{

//从控制器获取当前DMA状态及传输的数据量

}

DMA_Stop()
{
pthread_cancel(thread);
InterruptDetach(rs);
}

void PCI_ISR_0 (void arg)
{
rs = InterruptAttach (irq_no, handler0, NULL, 0, 0);
if (rs == -1)
printf (“IntConnect ERR %d \n”);
while(1)
{
InterruptWait (NULL, NULL);
//printf(“Now Interrupt attached!\n”);
//break;
}

pthread_exit(0);
}

const struct sigevent *handler0(void *arg, int id)
{
//中断服务,判断DMA引发的中断并处理
return (&event);
}

main()
{

//初始化略
DMA_Start();
do{
DMA_Status (&status, &currentCount);
printf("\nThe Current Count is %d.\n", currentCount);
}while ((status == AD_DMA_RUN) && (getchar()!=KEY_ESC));

DMA_Stop();
}

现在的问题就是在主函数中那个判断status的循环只循环一次,然后我必须按回车才能继续执行。有点不大明白,请各位大虾指点。

自己顶一下,请各位大虾给予指导。

while ((status == AD_DMA_RUN) && (getchar()!=KEY_ESC));

把getchar()拿掉不就行了吗?