Redirection "<" en C

beno0ou Messages postés 5 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 18 octobre 2010 - 22 févr. 2010 à 18:43
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 23 févr. 2010 à 13:50
Bonjour, j'ai dans un projet besoin de rediriger l'entree standard d'un programme qui sera execute par le contenu d'un fichier.
Nous avous fait enormement de tests sans succes.

Comment, avant ou autour d'un execve, remplir l'entree standard du programme execute par execve avec le contenu d'un fichier??
Je ne demande pas de codes, mais simplement des indices si certains d'entre vous ont des idees.

Merci d'avance! =)

2 réponses

beno0ou Messages postés 5 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 18 octobre 2010
22 févr. 2010 à 19:50
Edit: Resolu!
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
23 févr. 2010 à 13:50
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 :
#include 
#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 :
#include 
#include <fcntl.h>

int     redir(char *filename)
{
  int   fd;
  return (filename NULL || (fd open(filename, O_RDONLY, 0644)) == -1) ? -1 : dup2(fd, STDIN_FILENO);
}
0