【发布时间】:2016-04-01 06:43:39
【问题描述】:
char buf[1];
if (argc == 1) {
while (read(STDIN_FILENO, buf, 1) > 0) {
write(1, buf, sizeof(buf));
}
}
关于这个 sn-p,我有几件事想澄清一下。我们运行它, ./exec_file 假设我们只是按 Enter 键。我们移至下一行并读取 1 个字节 '\n' 然后将其写入标准输出,从而使我们再下一行……很简单。现在假设我们输入h,然后输入。程序在下一行吐出h,并带有一个不可见的'\n'。
在我们输入h 之后查看代码,它会将其读入缓冲区,然后将其写入标准输出,但不知何故,程序会等待在下一行将其吐出,直到我按下 Enter 后..如何?
最后,当我们第一次点击 while 循环时,最初不会读取返回 0,因为我们最初没有输入任何内容??
【问题讨论】:
-
标准输入是行缓冲的;在用户按下回车键之前,输入不会提交给您的程序。
-
啊所以如果我们有
hhh然后输入它形成一个包含hhh\n的文件然后读取
标签: c stdin read-write