多个文件描述符到同一个文件,C

时间:2010-04-18 21:03:04

标签: multithreading file file-descriptor fclose

我有一个打开并读取相同文件(不写入)的多线程应用程序。我为每个线程打开一个不同的文件描述符(但它们都指向同一个文件)。然后每个线程读取文件并关闭它并在达到EOF时再次打开它。这个可以吗?如果我对文件描述符执行fclose()会影响指向同一文件的其他文件descritptors吗?

3 个答案:

答案 0 :(得分:4)

对于Linux系统,您不需要多个文件描述符来执行此操作。您可以共享单个文件描述符,并使用pread以原子方式执行搜索/读取操作,而无需修改文件描述符。

答案 1 :(得分:3)

没关系。您可以打开所有想要相同文件的时间,并且每个文件描述符将彼此独立。

答案 2 :(得分:0)

如果每个线程都有自己的文件句柄,那应该可以正常工作。由于您提到fclose()的使用,这表明您在每个线程中也使用fopen(),并且每个线程仅影响其自己的FILE *变量。

有问题吗?