执行命令行并返回命令输出

目前,我正在使用非标准SYSTEM内部例程(类似于Fortran 2008 EXECUTE_COMMAND_LINE内部函数)从我的fortran程序中使用shell命令行调用:

CALL SYSTEM(commandStr) 

其中commandStr是包含我要执行的shell命令的string。 此刻,我不知道直接的方式来返回commandStr的输出,但只有它的返回状态。 所以,我现在正在做的是将输出写入文件,然后从Fortran程序中读取文件。 例:

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

如果我想从myFile中删除逗号。 然后我使用OPEN和READ来获取dummyFile的内容。

这工作得很好,但是我很关心从磁盘写入/读取文件,特别是如果我在一个长的循环内执行此操作,并且commandStr输出很大。 有没有办法将commandStr输出redirect到我可以直接从Fortran程序访问的内存缓冲区(而不是硬盘)(也许是通过一个特定的UNIT号码)?

Solutions Collecting From Web of "执行命令行并返回命令输出"

如果这是在POSIX环境中,库函数popen()也可能是可用的。

 iunit = popen ('sed ''s/,//g'' myFile', 'r') 

查看Fortran环境的文档,因为我不确定将I / O连接到Fortran的语义。 如果它像C运行时库一样,文件连接也需要一个特殊的函数来关闭它, pclose()