是否有可能从 Fortran 启动外部程序并向该程序的标准输入写入内容?
我知道例如gfortran 的 SYSTEM 但没有这样的选项。
最佳答案
正如您所注意到的,GFortran 没有内置的类似 pipeline()/fork()/exec() 函数。
如果您使用的是 Linux 或其他类似 Unix 的系统,您可以执行类似的操作
- execute_command_line("mkfifo/path/to/fifo")
mkfifo 命令创建一个命名管道,即在文件系统中也有名称的管道。
open(newunit=plot_unit, file="/path/to/fifo", access="stream", format="formatted")
execute_command_line("gnuplot
所以我们的想法是,您可以像 GFortran 中的普通外部单元一样打开 FIFO,然后使用连接到 FIFO 的标准输入执行 gnuplot。
您可能需要交换 #2 和 #3 的顺序,以防出现死锁。但上述内容的一些细微变化应该可以工作(我已经使用它从一个 Fortran 程序连接到另一个程序)。
关于Fortran:管道到程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37763832/