目前,我使用的shell命令行使用非标准系统固有的程序(类似的Fortran 2008 EXECUTE_COMMAND_LINE征)从我的FORTRAN程序调用:执行命令行并返回命令输出
CALL SYSTEM(commandStr)
其中commandStr是包含我要执行的shell命令的字符串。目前,我不知道直接返回commandStr的输出,但只返回它的返回状态。所以,我现在正在做的是将输出写入文件,然后从Fortran程序中读取文件。例如:
CALL SYSTEM('sed ''s/,//g'' myFile > dummyFile')
如果我想从myFile中删除逗号。然后我使用OPEN和READ来获取dummyFile的内容。
这工作得很好,但我很关心从磁盘写入/读取文件,尤其是如果我在长循环内执行此操作,并且commandStr输出很大。有没有办法将commandStr输出重定向到我可以直接从Fortran程序访问的内存缓冲区(而非硬盘)(可能通过特定的UNIT号码)?
如果输出很大,将它存储到文件是否更有意义? – Rook
我想这对代码没有什么影响 - 我唯一担心的部分是频繁进出磁盘的I/O影响程序效率。是否有理由将它存储到文件中,我错过了什么? – milancurcic
那么,从我的观点来看,这只是一个实际问题。如果数据量不是很多,那么将其存储到文件中并不重要。它是大量的数据,我在当前正在运行的程序中重用它,这是我希望它成为内存的最后一个地方。我需要内存来存储“解析”该文件的结果,然后对这些文件进行处理。这可能可以更好地解释,但我认为你明白了。 – Rook