fork and printf

By | February 12, 2013

題目:請問下面的程序一共輸出多少個 “-“?

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
 for (int i = 0; i < 2; i++){   fork();   printf("-");  }  return 0; }

就咁睇,答案是 6,但實際是很 tricky 的 8。這是 printf 把 "-" 放到了緩存中,並沒有真正的輸出,在 fork 的時候,緩存被複製到了子進程空間,所以,就多了兩個