1
我尝试组织使用经典方案fork()/ pipe(), 处理的父子之间的阻塞传输,但我不明白为什么只有先读取()但所有后续的读取都不是,除此之外,它们在读取后不会返回零结果!Mac OS阻止读取(POSIX)
例如:
父母,第一次写入文件名孩子,不是等待答案:
for (NSString* file in filenames) {
fprintf(pict_log, "send to conversion file %s\n", filename);
write(g_pfds[1], filename, 512);
memset(filename, ' ', 512);
read(g_pfds[0], filename, 512);
fprintf(pict_log, "completed for file: %s\n", filename);
}
孩子,相同的,但反之亦然。
while(!g_break_child)
{
memset(filename, ' ', 512);
int read_bytes = read(g_pfds[0], filename, 512);
// some processing...
write(g_pfds[1], filename, 512);
}
我应该在每次迭代之后在孩子的read()上阻塞,但是为什么这种情况不会发生?