【发布时间】:2020-05-04 09:21:40
【问题描述】:
我正在练习读写系统调用,下面的代码在使用 while 循环和没有它们的情况下都可以正常工作。你能告诉我这里的while循环有什么用吗,是否有必要在使用读写系统调用时添加它。我是初学者。谢谢。
#include <unistd.h>
#define BUF_SIZE 256
int main(int argc, char *argv[])
{
char buf[BUF_SIZE];
ssize_t rlen;
int i;
char from;
char to;
from = 'e';
to = 'a';
while (1) {
rlen = read(0, buf, sizeof(buf));
if (rlen == 0)
return 0;
for (i = 0; i < rlen; i++) {
if (buf[i] == from)
buf[i] = to;
}
write(1, buf, rlen);
}
return 0;
}
【问题讨论】:
-
如果您要阅读的消息超过
256个字符怎么办?如果要读取的消息超过SSIZE_MAX,则必须多次重复操作。 -
使用
while循环,您可以在有可用数据时继续阅读。没有它,您只能阅读一次。哪一种更合适取决于预期的外部行为是什么。 -
如果出现错误会无限循环,最好查看
<= 0 -
@Ôrel 是的,谢谢。
-
@kiranBiradar 是的,现在我明白了,谢谢。
标签: c linux operating-system