我在Linux上使用libc中的system()时遇到了问题。我的代码是这样的:系统()可以在管道命令完成之前返回
system("tar zxvOf some.tar.gz fileToExtract | sed 's/some text to remove//' > output");
std::string line;
int count = 0;
std::ifstream inputFile("output");
while(std::getline(input, line != NULL))
++count;
我反复运行这个片段偶尔我发现在运行结束即计数== 0 - 无行已经从文件中读取。我查看文件系统,文件中包含我期望的内容(大于零行)。
我的问题是系统()返回,当整个命令传入已完成或存在的管道'|'意味着system()可以在管道完成后的命令部分之前返回?
我已明确未使用“&”到背景的任何命令的系统部分()。
为了进一步阐明我在实践中做运行该代码段的倍数倍平行但输出文件是线程ID和()每个呼叫递增到系统中的静态整数命名的唯一的文件名。我相信,每次调用system()时,输出到并读取的文件都是唯一的。
你有没有发现为什么计数有时是零,当你认为它不应该是? – 2011-06-17 17:23:35