Выполнение командной строки и возврат вывода команды

В настоящее время я использую вызов командной строки оболочки из моей фортран-программы с помощью нестандартной внутренней процедуры SYSTEM (аналогичной внутренней процедуре Fortran 2008 EXECUTE_COMMAND_LINE):

CALL SYSTEM(commandStr)

где commandStr - символьная строка, содержащая команду оболочки, которую я хочу выполнить. На данный момент я не знаю прямого способа вернуть вывод commandStr, а только его статус возврата. Поэтому сейчас я делаю так: записываю вывод в файл, а затем читаю файл из программы на Фортране. Пример:

CALL SYSTEM('sed ''s/,//g'' myFile > dummyFile')

если я хочу удалить запятые из myFile. Затем я использую OPEN и READ, чтобы получить содержимое dummyFile.

Это прекрасно работает, однако меня беспокоит запись/чтение файлов с диска, особенно если я делаю это в длинном цикле, и если вывод commandStr будет большим. Есть ли способ перенаправить вывод commandStr в буфер памяти (не на жесткий диск), к которому я мог бы получить доступ из моей программы на Fortran напрямую (возможно, через определенный номер UNIT)?

9
задан milancurcic 2 May 2013 в 04:24
поделиться