父进程将数组中的整数顺序写入管道。

...
close(thePipe[0]);
int array[]={1, 2, 5, 5, 5};
int j;

for(j=0; j<sizeof(array)/sizeof(int); j++){
  write(thePipe[1], &(array[j]), sizeof(int));
}
close(thePipe[1];
...

它的子进程读取这些整数并将其相加。
...
close(thePipe[1]);
int sum = 0;
int buffer;
while( 0 != read(thePipe[0], &buffer, sizeof(buffer)) ){
  sum = sum + buffer;
}
close(thePipe[0]);
...

孩子怎么知道什么时候从烟斗里看书?
即使孩子有更多的CPU时间,在父母没有写入管道之前,它仍然不会读取。
这是怎么回事?

最佳答案

操作系统负责这个。当您从管道读取数据时,执行将阻塞,直到有可用的数据为止。你的程序在那样等待的时候不会占用CPU时间。

08-16 09:26