IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Comment faire une redirection et un tube dans son propre shell?


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Novembre 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 156
    Par défaut Comment faire une redirection et un tube dans son propre shell?
    Bonsoir! J'ai créé mon propre shell et mais je rencontre encore des problèmes avec la redirection et les tubes. En effet, quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DAUPHINE> DAUPHINE> ls -l | grep terminal > fichier
    DAUPHINE> cat fichier
    Je n'obtiens rien.

    Alors que lorsque je fais la même commande dans le vrai shell j'obtiens quelque chose, le fichier avec le nom terminal et ses droits d'accès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    coppan12@b042-12:~$ ls -l | grep terminal > fichier
    coppan12@b042-12:~$ cat fichier
    -rwxr-xr-x 1 coppan12 student   13765 déc.  18 15:18 terminal

    Voici mon code, fonction parsing exclue... Mes deux commandes de redirections et de tube sont dans les case.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
        void commande () {
         pid_t pid, fid;
            int background = 0;
            int status;
            char car;
            int i, j, k, l;
            int p, p2;
            int execute=1;
            int output=0;
            int input=0;
            int tube=0;
            int fd[2];
            int fich;
            while(1){
                if(execute==1){
                    if(symboleP==0){
                        printf("DAUPHINE> ");
                    }    
                    for (j=0;j<10;j++){
                        respP[j]=NULL;
                    }            
                    execute=0;    
                    background=0;
                 }
                fflush(stdout);
                parsing();
                switch (symboleP) {
     
                    case 4:                                // SYMBOLE : >
                    if(output==0){
                        output=1;
                        execute=1;
                        for (l=0;l<10;l++){
                            eltsoutput[l]=respP[l];
                        }
                    }
                    break;
                case 5:                                // SYMBOLE : |
                    //if(tube==0){
                        /*for (l=0;l<10;l++){
                            eltstube[l]=respP[l];
                        }*/
                        p2=fork();
                        if(p2==0){
                            if(tube==0){
                                freopen( "fichier", "w", stdout );
                                execvp(respP[0], respP);
                            }
                            return(0);
                        }
                        else{    if(background==0){            // WITHOUT BG WAIT FOR THE SON
                                waitpid(p2, NULL, 0);
                            }
                            tube=1;                
                            execute=1;    
                        }
     
                    break;
                default: 
                    printf("");
     
        int main(int argc, char* argv[]) {
     
            int i, j, k, l;
    	int execute=1;
     
        while(1){
            if(execute==1){
                if(symboleP==0){
                    printf("DAUPHINE> ");
                }    
                for (j=0;j<10;j++){
                    respP[j]=NULL;
                }            
                execute=0;    
     
            }
        commande();
     
        }
        return 0 ;
        }

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,

    Que veux-tu dire par avoir développé ton propre shell ?

    Si cela veut dire que tu as tout redévelopper de zéro, je suppose que tu as aussi developpé les redirections (tube compris) ?

    Soit plus clair dans ta question... Car là, comme on ne sait pas ce que tu as fait, on va avoir du mal à t'aider

Discussions similaires

  1. Comment faire une redirection à la place d'une alerte
    Par Pere-Castor dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/03/2007, 19h13
  2. [PHP-JS] Comment faire une redirection ?
    Par innova dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2007, 13h06
  3. Comment faire une redirection WEB ?
    Par fredhali2000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/10/2006, 03h03
  4. comment faire une redirection vers une page qui contient des framsets
    Par zana74 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/08/2006, 13h03
  5. Réponses: 5
    Dernier message: 28/05/2006, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo