Pas eu le temps de répondre, mais pour ceux que ça intéresse ça se fait avec
dup2.
Exemple d'une fonction qui redirige l'entrée standard du processus courant vers le fichier donc le chemin est passé en paramètre :
Code C/C++ :
#include <unistd.h>
#include <fcntl.h>
int redir(char *filename)
{
int fd;
if (filename == NULL)
return -1;
fd = open(filename, O_RDONLY, 0644);
if (fd == -1)
return -1;
return dup2(fd, STDIN_FILENO);
}
Et sa version courte pour les hard-core codeurs

:
Code C/C++ :
#include <unistd.h>
#include <fcntl.h>
int redir(char *filename)
{
int fd;
return (filename == NULL || (fd = open(filename, O_RDONLY, 0644)) == -1) ? -1 : dup2(fd, STDIN_FILENO);
}