如何检查stdin缓冲区是否包含一些数据?
问题描述:
我试图开发一个使用C编程套接字的聊天应用程序。我需要检查stdin缓冲区是否有一些值将消息发送到客户端/服务器并接收它。但我不知道如何检查stdin缓冲区的值。 请帮忙。如何检查stdin缓冲区是否包含一些数据?
答
你想要select(2,3p)
。
答
这可能有助于
选择()让你在同一时间监测几个插座电源。它会告诉你哪些准备好阅读,准备写作,哪些套接字引发异常,如果你真的想知道的话。
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);
能否请你摆脱更多的光线? – Harsh 2010-10-20 04:37:11
stdin是FD 0. http://linux.die.net/man/2/select – 2010-10-20 04:40:04
我怀疑OP不熟悉手册页参考符号。这个回答意味着你应该在系统手册页的第2部分(系统调用)或第3节(POSIX标准)中查找'select'函数。 – 2010-10-20 12:30:08