fork两问
问题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。