问题1

以下代码。

int main() {
	fork();
	fork();
	fork();
	printf("---n");
	return 0; 
}

编译后执行./a.out | wc -l,输出多少?

问题2

以下代码。

int main() {
	fork();
	printf("b");
	if (fork() == 0) {
		write(1, "a", 1);
	}else{
		write(1, "c", 1);
	}
	return 0; 
}

编译后执行./a.out,输出多少?

答案

第一个是8,因为pipe会继承。

第二个是cabcbbab,结果不恒定,原因比较复杂。至少应当能看懂2个a2个c4个b,c先出ab后出最后一个是b。