c - 在 Linux/C 编程中,使用函数 write 也会在缓冲区上移动指标吗?

标签 c linux file buffer fwrite

如果我使用文本文件作为缓冲区,调用:

write(fd1, *buffer, count)
write(fd2, *buffer, count)

将从缓冲区向 fd1 和 fd2 写入相同的数据,还是从缓冲区的 fd1 写入完成的点开始向 fd2 写入?

(在这里潜伏了很多,第一次问东西,如果我做/写错了抱歉)

最佳答案

假设 *buffer 产生一个指向对象的指针,该对象至少包含 count 个字节,并且 fd1fd2 是有效的文件描述符,那么您提供的代码将传递相同的指针值并计算对 write() 的每次调用。 write() 不会以任何方式改变内容,函数调用的按值传递语义会阻止它修改指针。更改指针值的唯一方法是 write() 以某种方式在您的系统上定义为宏。

假设 write() 不是宏,即使每次调用传递相同的参数,每次调用也可能最终写入不同数量的字节。您必须检查 write() 的返回值以查看写入了多少字节的 *buffer

关于c - 在 Linux/C 编程中,使用函数 write 也会在缓冲区上移动指标吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24763388/

相关文章:

c - 在 C 条件语句中可以使用多个整数和一个操作数吗?

c - 将 movsbl 汇编为 C 代码

c - 将字符串数组传递给函数 C

c - 在队列上执行 tr 命令?

file - Cordova - 下载下载文件夹中的文件

c - pthread_join 总是导致 SIGSEGV

php - Magento + modman = 503 结帐页面中的网络错误

c - 不采用else分支的多线程代码

Android httpPost 带参数和文件

mysql - 将脚本传输到新服务器后,SQL 和文件系统之间的编码文件名不匹配