Enlever les mots constituant la redirection - C - Programmation
MarshPosté le 03-03-2016 à 11:03:40
Bonjour, J'implémente les redirections d'entrée sortie dans mon minishell. En compilant et en exécutant mon programme, les redirections se font normalement mais je rencontre un problème pour me débarasser des mots constituant la redirection.
Exemple: Lorsque je tape ? echo essai > fichier.txt, le fichier créé contient "essai > fichier.txt" et non uniquement "essai" comme attendu. Je dois donc me débarasser de > et fichier.txt mais j'arrive pas à implémenter cela dans mon code. Voici la partie qui implémente cette redirection:
Code :
for (i = 0 ; mot[i] != NULL; i++) {
if (strcmp(mot[i],">" ) == 0)
{
freopen(mot[i+1], "w+", stdout); //redirige dans un fichier
}
if (strcmp(mot[i],"<" ) == 0)
{
freopen(mot[i+1], "r", stdin); //redirige sur la sortie standard
}
}
J'ai pensé à la fonction strtok(), lorsque j'insère mot[i+1] = strtok(NULL, " \n\0" ); après freopen(mot[i+1], "w+", stdout); le nom du fichier s'en va mais j'ai du mal à trouver la solution pour le caractère '>'.
Marsh Posté le 03-03-2016 à 11:03:40
Bonjour,
J'implémente les redirections d'entrée sortie dans mon minishell. En compilant et en exécutant mon programme, les redirections se font normalement mais je rencontre un problème pour me débarasser des mots constituant la redirection.
Exemple: Lorsque je tape
? echo essai > fichier.txt, le fichier créé contient "essai > fichier.txt" et non uniquement "essai" comme attendu. Je dois donc me débarasser de > et fichier.txt mais j'arrive pas à implémenter cela dans mon code.
Voici la partie qui implémente cette redirection:
J'ai pensé à la fonction strtok(), lorsque j'insère mot[i+1] = strtok(NULL, " \n\0" ); après freopen(mot[i+1], "w+", stdout); le nom du fichier s'en va mais j'ai du mal à trouver la solution pour le caractère '>'.
Merci d'avance pour l'aide.