gpt4 book ai didi

perl - 从 Perl 调用 Fortran 程序而不保存输入/输出文件

转载 作者:行者123 更新时间:2023-12-04 17:54:18 27 4
gpt4 key购买 nike

我正在使用 Perl 程序将用户输入正确格式化为 Fortran 程序的输入文件。 Fortran 程序创建一个输出文件和错误文件。 Fortran 程序是从 Perl 调用的,如:

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 ...

关于perl - 从 Perl 调用 Fortran 程序而不保存输入/输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com