Redireccionar STDOUT y STDERR al zócalo en C?

Estoy intentando redirigir STDOUT Y STDERR a un zócalo.

Yo hice

if(fork() == 0)
{
   dup2(newsock, STDOUT_FILENO);
   dup2(newsock, STDERR_FILENO);
   execvp();
}

e alguna manera, solo mostró la primera pequeña parte de la salida.

por ejemplo, se mostró en "mkdir" cuando intento ejecutar ls o mkdir.

¿Cuál es el problema

Intenté lo siguiente, funciona, pero solo puedo redirigir uno de STDOUT o STDERR

close(1);
dup(newsock);

Muchas gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta