目前,我使用的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