回 帖 发 新 帖 刷新版面

主题:linux下gfortran编译出的程序,写不了文件怎么回事啊

遇到了一个很诡异的错误,在linux系统下用fortran编译程序,程序最开始是open语句打开文件这都没有错,但是往文件里写内容却怎么也写不进去。为了验证一下,我把该往文件里写的内容用write(*,*)输出到屏幕上,屏幕上可以输出。为啥往文件里写写不进去呢?
我的程序原来一直在window下用intel编译器编译运行,是没有任何错误的。
有高手大侠麻烦帮帮忙,我都快崩溃了。

回复列表 (共18个回复)

沙发

把Open语句贴出来看看?

板凳

及其一般的open语句
open(1001,file='jc/ETA.txt',action='write')
还有十几个open语句,都是和这个一样的结构。
大侠咋回事呢,往文件里写东西,死活文件大小就是0,啥也写不进去

3 楼

还有,我用的是集群,曙光的,提交任务的节点和计算节点不是一个,这个应该没啥影响吧?我以前用过别的集群,提交任务的节点和计算节点也不是一个,没出现过这种问题。

4 楼

集群啊,那如果不用mpirun程序执行正常么?是不是NFS设置的问题?jc目录在NFS上么?

5 楼

不用mpirun是可以运行出正确结果的。
我在登陆窗口直接输入 ./cR=2 (cR=2是我的程序名),程序中write(*,*)的内容就可以输出到屏幕上;如果编写脚本,提交脚本的话,程序中write(*,*)的内容按理来说应该写到日志中,但日志里什么也没有。
所以我不知道是不是有什么东西(环境变量或者什么的,linux系统我比较白,不大懂)我没有导入到我的工作目录下

6 楼

或者是gfortran本身打开文件写文件有什么要求吗,比如前面要加上include什么的语句

7 楼

不需要任何include。

8 楼

如果open一个没有的文件看看会不会被创建? 我觉得会不会文件是写到各自节点的硬盘上了?
我们的集群管理不是使用作业提交的方式, 是自由访问节点, 各个节点都通过网络访问管理点的硬盘.  对作业提交方式的集群没怎么了解.

9 楼

文件被创建了,但就是写不进去内容

10 楼

找到部分原因了,但还是没解决!!!
我描述一下问题啊:
要等程序都运行完了才会把所有的结果写进文件,可是我的程序一共循环1000步,每一步都往文件里写东西啊,intel编译器编译出来的程序是没问题的,咋换成gfortran就变成这个样子了呢???

我来回复

您尚未登录,请登录后再回复。点此登录或注册