如果我使用文本文件作为缓冲区,调用:
write(fd1, *buffer, count)
write(fd2, *buffer, count)
将从缓冲区向 fd1 和 fd2 写入相同的数据,还是从缓冲区的 fd1 写入完成的点开始向 fd2 写入?
(在这里潜伏了很多,第一次问东西,如果我做/写错了抱歉)
最佳答案
假设 *buffer
产生一个指向对象的指针,该对象至少包含 count
个字节,并且 fd1
和 fd2
是有效的文件描述符,那么您提供的代码将传递相同的指针值并计算对 write()
的每次调用。 write()
不会以任何方式改变内容,函数调用的按值传递语义会阻止它修改指针。更改指针值的唯一方法是 write()
以某种方式在您的系统上定义为宏。
假设 write()
不是宏,即使每次调用传递相同的参数,每次调用也可能最终写入不同数量的字节。您必须检查 write()
的返回值以查看写入了多少字节的 *buffer
。
关于c - 在 Linux/C 编程中,使用函数 write 也会在缓冲区上移动指标吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24763388/