>> 671
下のようにしてみました。
int fd = dup(1);
cout << "show (before close)" << endl;
close(1);

cout << "not shown" << endl;

dup2(fd, 1);

cout << "show (cout)" << endl;
printf("show (printf)\n");

結果は
show (before close)
show (printf)

coutが復活してない模様です...