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

C Discussion :

programme c sous unix


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut programme c sous unix
    bonjour
    j'ai le programme suivant que je tente d'analyser et qui est destine a un fonctionnement sous unix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int fd01,fd02 ;
    fd01=open(inf01.txt, O_RDWR);
    fd02=open(inf02.txt, O_RDWR); jusqu'a la tout va bien ouverture du fichier en lecture et ecriture 
    printf("message 1111\n); on y'est ecrit ce message 
    dup2(fd01,0); la probleme je sait que dup2 duplique un fichier mais que viennet faire les valeurs 0 et 1 la dedans 
    dup2(fd02,1);
    printf("message2222\n");//ecriture encore une fois
    write(fd01,"message 4444",12);
    lseek(fd01,0,0°.//pour se placer au début de inf01.txt
    c=getchar();//permet de lire un caractère de l'entrée standard
    putchar(c);//permet d'afficher la valeur de c sur la sortie standard
    printf("message03");
    }

    en gros comme j'ai pas encore unix je ne peux pas tester ce programme pour connaitre a quoi il sert c'est pour ca que je sollicite votre aide et merci d'avance

  2. #2
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    http://linux.about.com/library/cmd/blcmdl2_dup2.htm

    Dup2 n'a pas l'air de copier le fichier mais de copier le pointeur de fichier. Comme c'est 0, et 1 je pense que cela correspond aux sortie standard ce qui sort dans la console ( stdin, et stdout ).

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut
    @themadmax

    tout d'abord merci pour ta reponse donc si je comprend bien le but de dup2 dans ce cas la est d'afficher le contenu des fichiers dans la console mais quel est la difference entre mettre 0 et 1???

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 461
    Par défaut
    Avant toute chose, il y a énormément d'erreurs de syntaxe dans ton programme. Il faudra les corriger pour qu'il compile.

    Citation Envoyé par ibuto Voir le message
    en gros comme j'ai pas encore unix je ne peux pas tester ce programme pour connaitre a quoi il sert c'est pour ca que je sollicite votre aide et merci d'avance
    Comme themadmax te l'explique, dup2() sert à dupliquer un descripteur de fichier déjà ouvert, en refermant éventuellement le descripteur-cible au préalable s'il était déjà ouvert.

    Dans ton programme, deux fichiers sont ouverts, et leurs descripteurs viennent remplacer ceux de l'entrée et de la sortie standard. « inf01.txt » devient donc l'entrée officielle comme si son contenu avait été saisi au clavier, et tout ce qui est en principe envoyé vers l'écran avec printf() ou autre le sera désormais vers ton fichier « inf02.txt ».

    L'utilisateur, depuis le Shell, peut demander à faire cela explicitement et avec n'importe quel programme à l'aide de « < » et « > ».

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut
    oui merci pour tous ces eclaircissement donc si je comprends bien le contenu du 2 fichier sera le contenu des printf et le contenu du premier sera

    message 4444 et(c qui sera d'ailleurs dans les 2)

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 461
    Par défaut
    Pas tout-à-fait :

    • Ton programme commence par ouvrir deux fichiers en lecture/écriture, chacun disposant de leur propre handle (le descripteur de fichier renvoyé par open). À noter que comme tu ne passes pas le flag O_CREAT, ces fichiers doivent exister au préalable. On considère qu'ils sont vides à l'exécution de ton programme ;
    • Tu écris « message 1111 » aec printf mais sans avoir encore modifié les descripteurs de fichiers. Ce message apparaît donc à l'écran (et nulle part ailleurs) ;
    • 0, 1, et 2 sont les trois premiers descripteurs de fichiers possibles. Ils correspondent toujours, respectivement à l'entrée standard, la sortie standard, et à la sortie d'erreur standard ;
    • Tu copies le descripteur du premier fichier vers le descripteur 0. Tout ce qui sera lu, désormais, depuis l'entrée standard proviendra donc de ce fichier (qui est vide pour l'instant) ;
    • Tu copies le descripteur du second fichier vers le descripteur 1. Tout ce qui sera désormais envoyé vers la sortie standard atterrira dans ce fichier ;


    Comme ton problème est potentiellement un devoir, je te laisse deviner toi-même ce qui se produit ensuite.

    À noter que tu peux très bien compiler ce programme sous Windows.

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut
    @Obsidian

    merci pour ton aide mais ce n'est pas vraiment un devoir

    grand merci a tous pour tous ces details

Discussions similaires

  1. programmation c sous unix HELP ME PLEASE
    Par tousa dans le forum Réseau
    Réponses: 2
    Dernier message: 28/03/2010, 23h57
  2. programmation c sous unix , les files de messages
    Par élève_ingénieur dans le forum Linux
    Réponses: 4
    Dernier message: 07/12/2009, 22h43
  3. modification de programme .pc sous unix
    Par gege87270 dans le forum Shell et commandes GNU
    Réponses: 33
    Dernier message: 01/10/2007, 08h50
  4. Programmation systeme sous Unix
    Par Premium dans le forum Linux
    Réponses: 9
    Dernier message: 11/03/2006, 09h40

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