从Perl调用Fortran程序而不保存输入/输出文件
发布时间:2020-12-16 06:29:08 所属栏目:大数据 来源:网络整理
导读:我正在使用Perl程序将用户输入正确格式化为Fortran程序的输入文件. Fortran程序创建输出文件和错误文件.从Perl调用Fortran程序,如: system "/mydirectories/fortranexecutable $inputfile $outputfile $errorfile"; 我想知道是否有办法调用Fortran可执行文
我正在使用Perl程序将用户输入正确格式化为Fortran程序的输入文件. Fortran程序创建输出文件和错误文件.从Perl调用Fortran程序,如:
system "/mydirectories/fortranexecutable $inputfile $outputfile $errorfile"; 我想知道是否有办法调用Fortran可执行文件而不实际创建输入/输出/错误文件并在调用Fortran程序之前/之后将它们保存到磁盘?我希望我的问题很清楚,而不是太明显.我是Perl的新手,我试着到处寻找这个.感谢您的帮助. 解决方法
如果Fortran代码顺序读取并顺序写入现有文件,但您希望通过Perl代码“实时”与它进行通信,那么您可以使用
named pipes来解决它们.它们仍然作为文件系统中的条目存在并且可以像Fortran代码一样打开常用文件给出它们的名字但是从/向它们读/写就像管道一样.
在Perl中你会做这样的事情(从this answer公然复制): use File::Temp qw(tempdir); use File::Spec::Functions qw(catfile); use POSIX qw(mkfifo); my $dir = tempdir(CLEANUP=>1); my $inputfifo = catfile($dir,"input"); mkfifo($inputfifo,0700) or die "mkfifo($inputfifo) failed: $!"; my $outputfifo = catfile($dir,"output"); mkfifo($outputfifo,0700) or die "mkfifo(output$fifo) failed: $!"; my $errorfifo = catfile($dir,"error"); mkfifo($errorfifo,0700) or die "mkfifo($errorfifo) failed: $!"; ... open the FIFOs ... system "/mydirectories/fortranexecutable $inputfifo $outputfifo $errorfifo"; ... operate with the FIFOs to communicate with the Fortran code ... ... close FIFOs and remove $dir when finished ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |