program testfifo implicit none integer status write(*,*) "hello" call flush() open(unit=11,file="My@R_419_6889@dPipe",action='write',form ='unformatted' $,iostat=status); close(11) write(*,*) "by" call flush() return end program testfifo
如果我用普通文件运行它,它可以工作:
/fortran > rm -f My@R_419_6889@dPipe && touch My@R_419_6889@dPipe/fortran > gfortran -o testfifo testfifo.f /fortran > ./testfifo hello by
然而,运行fifo我的程序卡住了:
/fortran > rm -f My@R_419_6889@dPipe && mkfifo My@R_419_6889@dPipe/fortran > gfortran -o testfifo testfifo.f /fortran > ./testfifo hello^C
我没有收到任何错误消息.另外,我尝试改变格式化的开放语句< - >未格式化,错误处理等错误= 100,但它没有帮助.以下是我的一些系统统计信息:
linux lin45 3.2.0-4-amd64#1 SMP Debian 3.2.54-2 x86_64 GNU / linux
gfortran 4.6.2
gcc 4.6.2
g 4.6.2
我正在网上搜索这个问题的解决方案已经有一段时间了.如果有人可以帮助我,我会很高兴.此外,如果有人能够毫无困难地运行代码,我会感兴趣,如果这可能是由于任何系统/编译器问题.谢谢.
注意:我真正感兴趣的程序需要在#n进程之间进行通信,因此,我认为,我不能使用普通管道.此外,已经有一个使用管道设置的代码版本.但是,它只能在Mac上运行.我的任务是在linux下运行它. Mac规格如下:
Mac OS X 10.7.5
Xcode 4.5
gfortran 4.6.1
gcc 4.2.1
g 4.2.1
program testfifo implicit none integer status write(*,*) "hello" call flush() open(unit=11,access='stream' & &,form ='unformatted',iostat=status) write(11) status print *,status close(11) write(*,*) "by" call flush() end program testfifo
因为http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30162,我使用了流访问
总结以上是内存溢出为你收集整理的linux – 命名管道和fortran的麻烦全部内容,希望文章能够帮你解决linux – 命名管道和fortran的麻烦所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)