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()上阻塞,但是爲什麼這種情況不會發生?