Recréer la redirection STDIN dans C

J’essaie de créer un programme C qui redirige IO. J’ai produit des morceaux de gâteau, mais les entrées semblent plus difficiles. Peut-être que je ne comprends tout simplement pas tout mais je fais quelque chose comme ceci:

int redFile; fflush(stdin); myio = dup(0); redFile = open(rhs, O_WRONLY, 0644); dup2(redFile, 0); close(redFile); // Any scanf("%s", &buf) here should read from my redFile (correct?) into some buffer, buf[64] or something fflush(stdin); dup2(myio, 0); close(myio); 

Alors maintenant, j’ai du buf [64] avec une chaîne du fichier, redFile, mais comment puis-je en faire l’entrée dans une commande spécifiée par le char * lhs (défini plus tôt dans le programme). Tout mon programme utilise execve () pour créer un shell virtuel.

Je dois être capable de gérer certains comme:

input.txt:

 test1 test2 test3 tac  output.txt 

output.txt

 test3 test2 test1 

Si vous souhaitez que le contenu d’un tampon soit l’entrée d’un processus, vous devrez écrire ces données dans un canal. Fondamentalement, vous devez créer un tuyau puis fourchette. L’enfant copiera son entrée pour être lue depuis le tube via dup2( pfd[ 0 ], STDIN_FILENO ) puis exec, tandis que le parent écrira les données de l’autre côté du tube.