我有一个打开并读取相同文件(不写入)的多线程应用程序。我为每个线程打开一个不同的文件描述符(但它们都指向同一个文件)。然后每个线程读取文件并关闭它并在达到EOF时再次打开它。这个可以吗?如果我对文件描述符执行fclose()会影响指向同一文件的其他文件descritptors吗?
答案 0 :(得分:4)
对于Linux系统,您不需要多个文件描述符来执行此操作。您可以共享单个文件描述符,并使用pread以原子方式执行搜索/读取操作,而无需修改文件描述符。
答案 1 :(得分:3)
没关系。您可以打开所有想要相同文件的时间,并且每个文件描述符将彼此独立。
答案 2 :(得分:0)
如果每个线程都有自己的文件句柄,那应该可以正常工作。由于您提到fclose()
的使用,这表明您在每个线程中也使用fopen()
,并且每个线程仅影响其自己的FILE *
变量。
有问题吗?