我有一个Fortran子例程,在主程序中调用了几次(我无法访问)。在我的子程序中,我希望根据输入参数在每次迭代中从几个(~10 ^ 4)个文件中的一个读取数据。每个文件都有一行数据;我的数据格式如下:
0.97014199999999995 0.24253600000000000 0.0000000000000000
我正在使用以下代码行来打开和阅读文件:
program test_read
implicit none
integer :: i, iopen_status, iread_status
real :: gb
CHARACTER(len=25) :: filename
CHARACTER(*), PARAMETER :: fileplace =
& "/home/ajax/hexmesh_readn/G3/"
dimension gb(3)
i = 5
WRITE(filename,'(a,I0,a)')'GBn_',i,'.txt'
open(unit=15,
& file=fileplace//filename,IOSTAT=iopen_status)
read (15,*,IOSTAT=iread_status) gb
print *,"gb",gb(1),gb(2),gb(3)
close(15)
end program test_read
答案 0 :(得分:1)
您是否同时运行同一程序的多个实例?在某些操作系统上,不同的程序无法同时打开同一个文件。指定您希望只读访问可能允许多个程序访问。在Fortran公开声明中:action='read'
。
如果您正在运行多线程程序,那么不同的线程可能在不同的文件上同时执行IO ...每个线程应使用不同的单元号以避免冲突。