如何检查stdin缓冲区是否包含一些数据?

问题描述:

我试图开发一个使用C编程套接字的聊天应用程序。我需要检查stdin缓冲区是否有一些值将消息发送到客户端/服务器并接收它。但我不知道如何检查stdin缓冲区的值。 请帮忙。如何检查stdin缓冲区是否包含一些数据?

你想要select(2,3p)

+0

能否请你摆脱更多的光线? – Harsh 2010-10-20 04:37:11

+0

stdin是FD 0. http://linux.die.net/man/2/select – 2010-10-20 04:40:04

+1

我怀疑OP不熟悉手册页参考符号。这个回答意味着你应该在系统手册页的第2部分(系统调用)或第3节(POSIX标准)中查找'select'函数。 – 2010-10-20 12:30:08

这可能有助于

选择()让你在同一时间监测几个插座电源。它会告诉你哪些准备好阅读,准备写作,哪些套接字引发异常,如果你真的想知道的话。

Beej's Guide to Network Programming上有一个很好的和易于遵循讨论。

在POSIX系统中,你可以做一些沿线:

FD_ZERO (&rset); 
FD_SET (fileno (stdin), &rset); 

maxfd = fileno (stdin); 
tv.tv_sec = 3; 
tv.tv_usec = 0; 

select (maxfd + 1, &rset, NULL, NULL, &tv);