【发布时间】:2011-12-11 22:50:18
【问题描述】:
目前,我使用非标准 SYSTEM 内部例程(类似于 Fortran 2008 EXECUTE_COMMAND_LINE 内部)从我的 fortran 程序中使用 shell 命令行调用:
CALL SYSTEM(commandStr)
其中 commandStr 是一个字符串,其中包含我要执行的 shell 命令。目前,我不知道返回 commandStr 输出的直接方法,而只是返回它的返回状态。所以,我现在正在做的是将输出写入文件,然后从 Fortran 程序中读取文件。示例:
CALL SYSTEM('sed ''s/,//g'' myFile > dummyFile')
如果我想从 myFile 中删除逗号。然后我使用 OPEN 和 READ 来获取 dummyFile 的内容。
这很好用,但是我担心从磁盘写入/读取文件,特别是如果我在一个长循环中执行此操作,并且 commandStr 输出很大。有没有办法将 commandStr 输出重定向到内存缓冲区(不是硬盘),我可以直接从我的 Fortran 程序访问(可能通过特定的 UNIT 编号)?
【问题讨论】:
-
如果输出很大,将其存储到文件中不是更有意义吗?
-
我想这不会对代码产生影响——我唯一担心的部分是频繁的磁盘 I/O 影响程序效率。是否有理由将它存储到文件中更好,这是我遗漏的东西?
-
好吧,在我看来,这只是一个实用性问题。如果不是很多数据,则将其存储到文件中无关紧要。它是很多数据,我在当前运行的程序中重用它,我想要的最后一个地方是内存。我需要内存来存储“解析”该文件的结果,然后对这些结果进行处理。这可能会得到更好的解释,但我想你明白了。
-
我感觉你正在尝试解决你没有的问题。
-
@eriktous 我同意,我现在所做的工作有效,但问题仍然存在,有没有其他方法可以做到?