使用read(..)从stdin读取并计算缓冲区的大小
我想知道是否有人可以告诉我,当使用read(...)
从stdin read(...)
输入时是否有动态分配缓冲区的方法例如:
n = read(0, buffer, sizeof ?);
如何确保从stdin
(此处为0)读取的字节数与buffer
的相同?
你不能。 您可以read
固定大小的缓冲区,例如:
char buf[BUF_SIZE]; int num_read = read(0, buf, BUF_SIZE);
然后弄清楚是否有更多可用数据(通常通过检查num_read
是否等于BUF_SIZE
,但在某些情况下,您可能需要解释数据本身)。 如果有,那么你再做一次阅读。 等等。
由您来处理连接所有读取数据。
你不能(除非你有预知技能)弄清楚你会得到什么的大小。
但是read方法允许你逐个读取stdin的内容,如果你将read()调用放入( while your_stop_condition
)循环中,你将能够通过数据包读取stdin所需的所有东西。
char buffer_to_read[SIZE]; int bytes=0; while your_stop_condition { bytes = read(0, buffer_to_read, SIZE); // do what you want with your data read // if bytes < SIZE, you read an EOF }