Добрый день. Возник у меня следующий вопрос: создаются сокеты с помощью socketpair, далее выполняется fork. В форкнутой части вызывается функция dup2, вроде все хорошо но при попытке записи через копию описателя данные не передаются на приемную сторону, с оригинальным хендлом все нормально. Ниже пример кода форкнутой и нормальной части.
void NormalPart(int sockets[2]) { close(sockets[1]); char buffer[255] = {0}; while (read(sockets[0], buffer, 255) > 0); close(sockets[0]); }
void ForkPart(int sockets[2]) { sigset_t sigs; sigemptyset(&sigs); sigprocmask(SIG_SETMASK,&sigs,0); close(sockets[0]); int null = open("/dev/null", O_RDWR); if (null != -1 && dup2(null, STDOUT_FILENO) != -1 && dup2(null, STDERR_FILENO) != -1 && dup2(null, STDIN_FILENO) != -1 && dup2(sockets[1], 3) != -1) { ....... close(null); write(sockets[1], "test", 5); //работает write(3, "test", 5); //не работает close(sockets[1]); } _exit(127); } Буду благодарен за любые комментарии...