【发布时间】:2011-10-25 10:35:24
【问题描述】:
我尝试组织使用经典方案 fork()/pipe() 处理的父子之间的阻塞传输, 但我不明白为什么只有 child 中的第一个 read() 阻塞,但所有后续读取都不是,而且读取后它们返回的结果不为零!
例如:
父母,先将文件名写入孩子,然后等待答案:
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() 阻止,但为什么这没有发生?
【问题讨论】: