主题:linux下gfortran编译出的程序,写不了文件怎么回事啊
			 baccle
				 [专家分:190]  发布于 2011-07-10 21:45:00
 baccle
				 [专家分:190]  发布于 2011-07-10 21:45:00							
			遇到了一个很诡异的错误,在linux系统下用fortran编译程序,程序最开始是open语句打开文件这都没有错,但是往文件里写内容却怎么也写不进去。为了验证一下,我把该往文件里写的内容用write(*,*)输出到屏幕上,屏幕上可以输出。为啥往文件里写写不进去呢?
我的程序原来一直在window下用intel编译器编译运行,是没有任何错误的。
有高手大侠麻烦帮帮忙,我都快崩溃了。
						
					 
		
			
回复列表 (共18个回复)
		
								
				沙发
				
					 cgl_lgs [专家分:21040]  发布于 2011-07-10 22:50:00
cgl_lgs [专家分:21040]  发布于 2011-07-10 22:50:00				
				把Open语句贴出来看看?
							 
						
				板凳
				
					 baccle [专家分:190]  发布于 2011-07-11 09:04:00
baccle [专家分:190]  发布于 2011-07-11 09:04:00				
				及其一般的open语句
open(1001,file='jc/ETA.txt',action='write')
还有十几个open语句,都是和这个一样的结构。
大侠咋回事呢,往文件里写东西,死活文件大小就是0,啥也写不进去
							 
						
				3 楼
				
					 baccle [专家分:190]  发布于 2011-07-11 09:09:00
baccle [专家分:190]  发布于 2011-07-11 09:09:00				
				还有,我用的是集群,曙光的,提交任务的节点和计算节点不是一个,这个应该没啥影响吧?我以前用过别的集群,提交任务的节点和计算节点也不是一个,没出现过这种问题。
							 
						
				4 楼
				
					 cgl_lgs [专家分:21040]  发布于 2011-07-11 09:33:00
cgl_lgs [专家分:21040]  发布于 2011-07-11 09:33:00				
				集群啊,那如果不用mpirun程序执行正常么?是不是NFS设置的问题?jc目录在NFS上么?
							 
						
				5 楼
				
					 baccle [专家分:190]  发布于 2011-07-11 10:26:00
baccle [专家分:190]  发布于 2011-07-11 10:26:00				
				不用mpirun是可以运行出正确结果的。
我在登陆窗口直接输入 ./cR=2 (cR=2是我的程序名),程序中write(*,*)的内容就可以输出到屏幕上;如果编写脚本,提交脚本的话,程序中write(*,*)的内容按理来说应该写到日志中,但日志里什么也没有。
所以我不知道是不是有什么东西(环境变量或者什么的,linux系统我比较白,不大懂)我没有导入到我的工作目录下
							 
						
				6 楼
				
					 baccle [专家分:190]  发布于 2011-07-11 11:23:00
baccle [专家分:190]  发布于 2011-07-11 11:23:00				
				或者是gfortran本身打开文件写文件有什么要求吗,比如前面要加上include什么的语句
							 
						
				7 楼
				
					 cgl_lgs [专家分:21040]  发布于 2011-07-11 11:32:00
cgl_lgs [专家分:21040]  发布于 2011-07-11 11:32:00				
				不需要任何include。
							 
						
				8 楼
				
					 yeg001 [专家分:14390]  发布于 2011-07-11 11:40:00
yeg001 [专家分:14390]  发布于 2011-07-11 11:40:00				
				如果open一个没有的文件看看会不会被创建? 我觉得会不会文件是写到各自节点的硬盘上了?
我们的集群管理不是使用作业提交的方式, 是自由访问节点, 各个节点都通过网络访问管理点的硬盘.  对作业提交方式的集群没怎么了解.
							 
						
				9 楼
				
					 baccle [专家分:190]  发布于 2011-07-11 11:49:00
baccle [专家分:190]  发布于 2011-07-11 11:49:00				
				文件被创建了,但就是写不进去内容
							 
						
				10 楼
				
					 baccle [专家分:190]  发布于 2011-07-11 12:07:00
baccle [专家分:190]  发布于 2011-07-11 12:07:00				
				找到部分原因了,但还是没解决!!!
我描述一下问题啊:
要等程序都运行完了才会把所有的结果写进文件,可是我的程序一共循环1000步,每一步都往文件里写东西啊,intel编译器编译出来的程序是没问题的,咋换成gfortran就变成这个样子了呢???
							 
									
			
我来回复