我写了一个主脚本,调用系统程序数万次。主脚本在每次调用时创建并向该程序提供一个输入文件。完成后,程序创建一个由主脚本读取的输出文件。该程序运行时:program inputFile outputFile
主脚本运行缓慢,我相信这是由于运行时产生的大量 I/0 开销造成的program
。
是否可以在不写入或读取磁盘的情况下运行该程序?
请注意,inputFile
和都outputFile
可以包含多行。程序的内部结构可以改变,但我宁愿不这样做。不幸的是我在其他地方找不到相关建议。
答案1
这可能取决于您的脚本对program
.如果您正在做一些复杂的事情,需要多次处理文件,那么您可能会不走运。 (我们称之为“零点”。)
首先,检查是否可以直接且明确地告诉程序将其输出写入标准输出而不是命名文件。某些程序将仅包含破折号 ( ) 的参数解释-
为适当的标准输入或标准输出。所以尝试一下
程序输入文件- |你的处理
/dev/stdout
其次,尝试与输出文件名相同:
程序输入文件 /dev/stdout |你的处理
第三,尝试命名管道:
myFifo=$(mktemp) 程序输入文件“$myFifo”& 你的处理<“$myFifo” rm“$myFifo”