Pb de printf() dans la console que je veux avec MOS

7 sujets de 1 à 7 (sur un total de 7)

  • Yomgui

      #1124

      Bon voilà mon pb:

      Contexte:

      J’ai un programme qui utilise la stdio classique du langage C.

      Je veux ouvrir dans mon programme lancé par un icon (donc en mode WB) dans la console de mon choix et avoir stdout/stdin/stderr branchés sur cette console.

      Pb:

      J’arrive à ouvir ma console avec un:

      fd = open(« CON:xxx », O_RDWR) (libc)

      ou

      fh = Open(« CON:xxx », MODE_READWRITE) (amigaos).

      Mais j’ai jamais pu brancher mes printf() dessus !!!

      A chaque fois c’est la console définie dans les préférence de Ambient qui s’ouvre! et je n’est pas de contrôle dessus => la fermeture de cette console en cliquant sur le gadget close me bousille la logique de mon programme et provoque l’apparition d’un icon shell sur Ambient, qui si on double click dessus, me provoque un belle quantité de Hits !!

      Avec open() j’ai tenté un fdopen(fd, « rwb »), mais il renvois 0.

      Avec Open() + après des SelectInput(fh)/SelectOutput(fh) dessus, bah ça fait rien de mieux!

      HELP HELP HELP !!!

      krabob

        #27566

        Il ya l’article qu’il te faut sur gurumed: (merci sara)

        http://www.guru-meditation.net/main.php3?root=425

        ta startup initialise les flux d’une certaines façon, (remape les flux C standard aux flux amigaOS) et tu peux aprés la startup refaire les liens qui lient les flux aux fenetres. Il y a des exemples dans l’article.

        Yomgui

          #27567

          stdin->file

          !!! ça me tue !! 😮

          c’était ça alors?!!! pfuu une soirée perdue pour ça!

          ah si j’avais eu le net!

          en tout cas gros merci à toi krabob si ça marche ce soir ! ;-)

          Et un gros merci aussi à sara pour l’article sur Gurumet.. où j’ai quand même chercher pour pas trouver et passer à côté finalement !! X-D

          (PS: j’aurai jamais deviner à chercher les histoires de printf dans la catégorie multi-tâches ! :o))

          Yomgui

            #27568

            Bon je viens de zieuté la stdio.h dans gg:includestd/ du SDK de MOS…

            … bah y a pas de champ ‘file’ pour le type ‘FILE’ !!! :-(

            Par contre y a un champs _file:

            short _file; /* fileno, if Unix descriptor, else -1 */

            Vu que c’est un descripteur unix je pense que je vais mettre celui donné par la fonction open(). Je test cela ce soir!

            Si ça marche faudra que je comment sur gurumed ! ;-)

            sarag

              #27569

              Regarde plutôt ce passage là dans l’article (dernière section de code) :

              freopen(« CON:80/450/798/250/Alister Output/CLOSE/AUTO », « w », stdout); // Ouverture d’une deuxieme console, et association avec stdout

              Dis nous si c’est bon !

              Yomgui

                #27570

                sarag a écrit :

                Regarde plutôt ce passage là dans l’article (dernière section de code) :

                freopen(« CON:80/450/798/250/Alister Output/CLOSE/AUTO », « w », stdout); // Ouverture d’une deuxieme console, et association avec stdout

                Dis nous si c’est bon !

                Oui certe, mais faudra que je vérifie aussi si on peut faire:

                freopen(« CON:80/450/798/250/Alister Output/CLOSE/AUTO », « rw », stdout);

                stdin = stderr = stdout;

                !!

                Yomgui

                  #27571

                  J’ai tester hier soir et j’ai enfin réussi à avoir ce que je voulais:

                  #define DEFAULT_CONSOLE « CON:100/100/640/480/Gros Quick/CLOSE »

                  (…)

                  freopen(DEFAULT_CONSOLE, « w+ », stdout);

                  stdin = stderr = stdout;

                  (…)

                  Et surtout pas de wait ou auto dans les options de la console!

                  Sinon CON: attend un retour de je sais pas quoi…alors que votre programme est fermé (je pense qu’il faut certainement faire un ReplyMsg() de qq chose sur le port de notre console).

                7 sujets de 1 à 7 (sur un total de 7)

                • Vous devez être connecté pour répondre à ce sujet.

                Forums AmigaOS, MorphOS et AROS Développement Pb de printf() dans la console que je veux avec MOS

                Amiga Impact