线程和文件描述符

对不起我自己的研究,并在这里问。 我时间稍短。

是否有可能有两个或两个以上的线程从一个线程spwaned文件描述符表。 两个或两个以上的子线程正在同时访问同一个文件,同一个文件的两个不同的打开的偏移量是不同的,线程是不同的?

谢谢

Solutions Collecting From Web of "线程和文件描述符"

文件描述符在线程之间共享。 如果你想要“线程特定的”偏移量,为什么不让每个线程使用不同的文件描述符(多次open(2) )?

不,每个进程只有一个文件描述符表,它在所有线程之间共享。

从你的问题描述中,你可能想看看pread()和pwrite()函数。

在Linux中,您可以通过CLONE_FILES标志unshare()文件描述符表,但是我建议不CLONE_FILES

试试pread()/ pwrite()。

您仍然可以在多个线程中共享相同的文件描述符,即,使用pread()/ pwrite()函数可以保证对同一个文件的并行读取/写入操作,因为您需要分别指定读取/写入的偏移量和字节数。