Is this a bug or something

hi all
I have been working on designing a transceiver system these days.
I use a msg_queue to store the received packets and I konw
when the queue is empty,the delete_head() methods will block there and
wait a packet arrives.but when this happen,it will also not responds to
ctrl-C interrupt outside,is this a bug or something else?
can anyone tell me how to stop the process when the queue is empty?