无法为gawk协同进程分配内存

时间:2014-06-12 20:40:29

标签: memory fork gawk

我有一个gawk程序,在尝试启动协同进程时会死掉。错误信息是"致命:无法打开双向管道`...'用于输入/输出(无法分配内存)"。启动协同处理时gawk进程的内存使用率约为50%。

gawk程序的结构如下:

BEGIN {    
   ## Read big file into memory -- takes about 50% of memory
   while ( (getline <"bigFile") >0) {
      list[$0]
   }
}
{
   print |& "cat"    
}

我假设启动协同进程涉及fork(),这会使内存使用量增加一倍,从而导致错误?

如果我在将文件加载到内存之前强制启动协同进程,则启动协同进程没有问题。但是我知道迫使协同进程启动的最好方法是给它写一个空行:

print "" |& "cat"

这显然不太理想。 (虽然我可以忍受它,如果没有更好的方法解决这个问题。)

关于这个问题的清洁解决方案的任何想法?

0 个答案:

没有答案