Rediriger stdout et stderr vers socket pour un programme shell dissortingbué

J’ai créé un programme shell dissortingbué qui comprend un client et un serveur. Le client envoie une demande de commande au serveur et le serveur exécute cette commande localement et est supposé générer les résultats de cette commande vers le client. Je ne parviens pas à comprendre comment redirect stdout / stderr vers le client. J’utilise execvp pour exécuter la commande.

Je pense que je pourrais avoir à utiliser dup2? Mais je n’arrive pas à comprendre comment l’utiliser correctement. De l’aide?

Vous devez simplement utiliser dup2() pour dupliquer le descripteur de fichier du socket sur les descripteurs de fichier stderr et stdout. C’est à peu près la même chose que redirect vers des pipes.

 cpid = fork(); if (cpid == 0) { dup2(sockfd, STDOUT_FILENO); dup2(sockfd, STDERR_FILENO); execvp(...); /*... etc. etc. */