如果我在不同的线程中打开同一个文件(.txt文件)几次,返回的文件描述符将不同。如果我试图使用文件描述符写入(),那么当多个线程试图写入同一个文件时,是否有可能阻止写入函数?
我关心的是当一个线程调用写入一个文件时,当另一个线程调用写入同一个文件时。那么,第二个线程的写入是否会等待第一个线程的写入首先完成呢?如果是这样,我如何确保第二个写调用不会等待,如果有第一个写,我将立即返回,因为我不希望第二个线程的写等待。
谢谢
最佳答案
不,但如果最新的write()
写入到文件的重叠区域,则它总是会破坏先前的写入。
一个更常见的问题是写操作的文件偏移量,这可能是您真正的问题。在这种情况下,答案是:如果从每个线程调用open()
,则不会。从最后一个write()
到源自同一个原始open()
调用的任何描述符(如由dup()获得的描述符或由同一进程中的线程共享的描述符)的剩余文件偏移量将发生写操作。
关于linux - Linux open()文件描述符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3673929/