关于STDIN_FILENO和STDOUT_FILENO的有关问题

关于STDIN_FILENO和STDOUT_FILENO的问题
从标准输入读数据到buf然后在用标准输出在控制台打印,正常的情况如下
n = read(STDIN_FILENO, buf, MAXLINE);
 write(STDOUT_FILENO, buf, n);

但是我不小心把代码写成了
n = read(STDOUT_FILENO, buf, MAXLINE); //read的第一个参数写成了STDOUT_FILENO
 write(STDOUT_FILENO, buf, n);
结果发现这样也能够正确的打印输入的数据。也就是说read阻塞直到输入换行时,数据已经先到达标准输出,然后read才去读取的,是这样么?
------解决思路----------------------
可以这么理解