在GDB中,它无法将输入文件传递给fortran程序

时间:2018-02-09 03:34:59

标签: fortran gdb

我可以将输入文件传递给fortran程序,如下所示:

./foo < inputfile

但是在gdb中,我尝试过这个:

gdb ./foo
run < inputfile

它什么都不显示,不起作用。

更新: 我的系统是MACOS high sierra GDB版本:8.0

2 个答案:

答案 0 :(得分:0)

主程序的示例,可选择从参数中获取输入数据文件:

np.random.seed(452)

first=np.random.rand(3,5)
print (first)
[[ 0.88642869  0.42677701  0.89968857  0.87976326  0.07758206]
 [ 0.43617027  0.03221375  0.46398119  0.14226246  0.14237448]
 [ 0.22679517  0.60271752  0.85003435  0.5676184   0.87565266]]

second=np.random.rand(3,2) 
print (second)
[[ 0.89830548  0.27066452]
 [ 0.23907483  0.73784657]
 [ 0.09083235  0.98984701]]

third=np.random.rand(3,3)

L = [first, second, third]

df = pd.DataFrame(np.concatenate(L, axis=1))
print (df)
          0         1         2         3         4         5         6  \
0  0.886429  0.426777  0.899689  0.879763  0.077582  0.898305  0.270665   
1  0.436170  0.032214  0.463981  0.142262  0.142374  0.239075  0.737847   
2  0.226795  0.602718  0.850034  0.567618  0.875653  0.090832  0.989847   

          7         8         9  
0  0.837404  0.090284  0.764517  
1  0.564904  0.489809  0.254518  
2  0.426737  0.364310  0.328396  

输入牌组&#34; d.dat&#34; :

program test
   character(256) :: cfile
   integer :: unit,status,itest
   call get_command_argument(1,cfile)
   if(cfile /= "") then
      unit=15
      open(unit,file=cfile,iostat=status)
      if(status /= 0) then
         write(*,*) 'invalid file ',trim(cfile)
         stop
      endif
   else
      unit=5
   endif
   read(unit,*) itest
   write(*,*) itest
   ! ...
end program

测试:

25

答案 1 :(得分:-1)

也许试试run <<< $(cat file)