从C中不同线程的文件中读取

时间:2015-03-08 21:24:38

标签: c multithreading pthreads

我有一个多线程服务器程序,每个线程都需要读取文件内容以检索客户端请求的数据。

我在C中使用pthreads来完成创建线程并将函数传递给线程将执行的线程。

在函数中,如果我使用FILE分配新的fopen()指针并随后使用fgets()读取文件的内容,每个线程是否都有自己的文件偏移量?也就是说,如果线程1正在从文件中读取,并且当线程2第一次读取时它位于文件的第5行,则线程2是否在第5行开始读取,或者它是否与线程1在文件中的位置无关?

1 个答案:

答案 0 :(得分:4)

每个打开的FILE只有一个文件指针。这有一个关联的FD,和一个文件位置(文件偏移量,如你所说)。

但你可以fopen两次文件(来自两个不同的线程或来自同一个线程) - 正如你现在编辑暗示你正在做的那样。这意味着您将拥有两个关联的FD和两个单独的文件位置。

IE,这与线程本身无关,只是如果你想要单独的文件位置,你需要两个FD(使用stdio)意味着两个FILE s。