primefaces追加在一个文件描述符,但在什么偏移?

在unistd.h中

使用open()和O_APPEND标志将primefaces写入始终保存到文件末尾…

这是伟大的,所有,但如果我需要知道它的primefaces附加到文件的偏移量…?

我意识到O_APPEND通常用于日志文件,但是我实际上想知道在文件中以primefaces方式附加的偏移量。

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

谢谢

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

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

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

当文件被打开时,文件被写入文件的偏移量。 如果另一个进程在打开和写入之间写入文件,则文件的内容是不确定的。

处理多个进程写入单个文件的正确方法是,所有进程使用O_APPEND标志打开文件,获得排它锁,一旦获得锁,在写入文件之前寻找文件末尾,最后关闭文件释放锁定。

如果要在写入之间保持文件打开状态,请使用O_APPEND标志打开文件来启动进程。 在这种情况下,写入循环获得排他锁,寻找到文件末尾,写入文件并释放锁。

如果你真的需要文件位置, lseek将在调用的时候返回调用者文件描述符的文件偏移量。