пишу cat, на основе данного нам в пример cat BSD, возник вопрос а зачен нужна проверка if (fstat(fileno(stdout), &statb) == 0) { statb.st_mode &= S_IFMT; if (statb.st_mode != S_IFCHR && statb.st_mode != S_IFBLK) { ведь stdout в любом случае не символьный и не блоковый, по крайней мере до этого момента в исходном коде он не менялся