c++ - 原子附加到文件描述符上,但偏移量是多少?

标签 c++ c linux posix unistd.h

在 unistd.h 中

使用带有 O_APPEND 标志的 open() 可以始终对文件末尾进行原子写入...

这很好,但是如果我需要知道它自动附加到文件的偏移量怎么办...?

我知道 O_APPEND 通常用于日志文件,但实际上我想知道它以原子方式附加到文件中的什么偏移量。

我没有看到任何明显的方法来做到这一点..?有人知道吗?

谢谢

最佳答案

要获取文件描述符中的当前位置,请使用带偏移量 0lseek() 以及 SEEK_CUR 的位置。

int fd = open(...);
if (fd) {
    off_t positionWhereAppendingBegins = lseek(fd, 0, SEEK_CUR);
    write(...);
    close(fd);
}

请注意,如果以其他方式打开描述符,即通过 socket(),这将不会为您提供可靠的结果。

关于c++ - 原子附加到文件描述符上,但偏移量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4207106/

相关文章:

c++ - 可以将特化注入(inject) std 命名空间吗?

c++ - 依赖初始化列表

linux - 使用 Rust 和 Amethyst 在 Linux 上缺少库

c++ - Qt + iperf3 = lconv 未声明

c++ - 如何避免 expr 中的溢出。 A B C D

c++ - 我们可以将 Q_PROPERTY 与模板 <typename T> 一起使用吗?

c - 需要有关 c 程序中字符串的帮助

c++ - 如何在 linux 上用 C/C++ 编写 Web 服务器

objective-c - 初始化 'Method *' C 时不兼容的指针类型

java - 如何在 Linux 终端中为 Java 使用 apache commons io?