Partage
  • Partager sur Facebook
  • Partager sur Twitter

system(" ");

que peut on mettre entre les guillemet

Sujet résolu
    1 janvier 2008 à 23:57:03

    Non, system() n'est pas portable, à utiliser uniquement pour Windows.
    • Partager sur Facebook
    • Partager sur Twitter
      2 janvier 2008 à 0:08:00

      Citation : noob4ever

      Je ne connais pas bien la fonction system() mais si elle fait appele au API système, donc WIN32 sur windows et X11 sur Linux alors c'est portable ?



      Désolé de le faire remarquer, mais pour un GNU/linuxien ça fait mal aux yeux :lol: .
      X11 est un serveur graphique, et pas un API. C'est à dire un des multiples programmes dont lesquels on peut parfaitement se dispenser.

      Sinon ça fonctionne différemment, car Windows va chercher les exécutables dans C:/WINDOWS/system32 . Alors que GNU/Linux va les cherchés dans /bin, /usr/bin, /usr/local/bin, etc... Bref tout les chemins qui sont renvoyés par la variable d'environnement $PATH. Et il est naturel que Windows n'est pas GNU, donc il vont fournir des programmes différent, si tu fais system("ipconfig"), sous GNU/linux ça marchera pas, il faudra faire system("ipconfig"). Sinon pour utiliser un programme dans la console, n'allez pas le mettre dans un dossier de binaire, vous indiquez le chemin absolue, comme system("/home/emacs250/programmes/kjdsi/fefeffefe/dzdzger/mon_best_programme").

      C'est pareil pour les librairies: #include </usr/include/stdlib.h> est équivalent à #include <stdlib.h>.
      • Partager sur Facebook
      • Partager sur Twitter
        2 janvier 2008 à 0:11:53

        Hola les gens!!!
        Faut arrêter de raconter des bêtises, system() est totalement portable. Ce sont les commandes qui lui sont passés en paramètres qui ne le sont pas forcément (un system("cls"); ne fonctionnera pas sous Linux mais un system("clear"); oui).

        Et aussi, librairie c'est là où on achète les livres en Français.
        C'est un faux amis en Anglais.
        library -> bibliothèque

        Kurapix
        • Partager sur Facebook
        • Partager sur Twitter
          2 janvier 2008 à 0:13:55

          Je tiens aussi à préciser, en plus du message de -Ed-, que la liste des commandes donnée par la commande help n'est pas exhaustive. Il en existe en réalité bien plus.
          • Partager sur Facebook
          • Partager sur Twitter
            2 janvier 2008 à 0:18:17

            Citation : -Skypers-

            Je tiens aussi à préciser, en plus du message de -Ed-, que la liste des commandes donnée par la commande help n'est pas exhaustive. Il en existe en réalité bien plus.



            Que l'on peut trouver dans les dossiers C:/WINDOWS/system(32 sur les WINDOWS 32 bits).
            • Partager sur Facebook
            • Partager sur Twitter
              2 janvier 2008 à 0:40:54

              Bonjour,

              Deux trois remarques:
              • La commande help liste toutes les fonctions native dans cmd.exe il n'y en a pas d'autre.
              • Toutes autres "commande" utilisables et ne faisant pas partie de help sont des applications à pars entières.
              • system(); est portable, mais la remarque de toupi n'est pas bonne, créer une app portable à coup de system() c'est allourdir le code pour rien.
              • Le faux ami est entré dans le langage courrant depuis un bon moment.
              • La variable d'environement PATH existe aussi sous windows system32 en fait partie mais il n'y a pas que ce repertoire.
              • Partager sur Facebook
              • Partager sur Twitter
                2 janvier 2008 à 0:57:38

                Citation : sloshy

                system(); est portable, mais la remarque de Toupi n'est pas bonne, créer une app portable à coup de system() c'est allourdir le code pour rien.


                Alourdir le code ?
                Plus que si on "réutilise les APIs" ? o_O (car c'est ça que tu proposes je crois non ?)
                • Partager sur Facebook
                • Partager sur Twitter
                  2 janvier 2008 à 1:26:23

                  Ok je ne savais pas que system() était portable. De toute manière, si vous souhaitez faire tourner un programme multi-plateforme, il n'est pas vivement pas conseillé d'utiliser system().
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 janvier 2008 à 1:29:08

                    Citation :

                    si vous souhaitez faire tourner un programme multi-plateforme, il n'est pas vivement pas conseillé d'utiliser system().


                    Et bien comme l'a dit Toupi, faire un code un minimum portable n'est pas sorcier, cf ce post .
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 janvier 2008 à 1:46:37

                      exacte, cf le poste le code est allourdi pour rien.
                      Je ne propose pas forcement les APIs mais c'est un bon moyen, mais il y a aussi le C standard qui propose pas mal d'options (ainsi que les bibliotheques standardisée).
                      Même refaire un copy sois même à la main est plus sobre que le poste au dessus il me semble.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        2 janvier 2008 à 2:28:59

                        Citation : 1337833K

                        Citation : xa4ke

                        tout ce qui est en dos


                        Faux, tout ce qui est en console, nuance.

                        Et sinon, c'est quoi l'intérêt de mettre ipconfig dans une variable alors qu'on peut faire directement system("ipconfig"); ? :-°



                        Faux, n'importe quelle chaine de caractères de taille maximale celle autorisée par le système d'exploitation (ou par l'implémentation de la lib C ?), nuance.

                        emacs250, bibliothèque(s)/librar[y/ies]/lib(s), pas librairie. Et il existe une API pour programmer le serveur graphique x11 hein :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 janvier 2008 à 10:42:53

                          Citation : -Skypers-

                          Ok je ne savais pas que system() était portable. De toute manière, si vous souhaitez faire tourner un programme multi-plateforme, il n'est pas vivement pas conseillé d'utiliser system().


                          Ben je ne vois pas pourquoi ... "Compilation conditionnelle", ça te parle ?

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            2 janvier 2008 à 12:21:10

                            Citation : Kreeg

                            Citation : 1337833K

                            Citation : xa4ke

                            tout ce qui est en dos


                            Faux, tout ce qui est en console, nuance.

                            Et sinon, c'est quoi l'intérêt de mettre ipconfig dans une variable alors qu'on peut faire directement system("ipconfig"); ? :-°



                            Faux, n'importe quelle chaine de caractères de taille maximale celle autorisée par le système d'exploitation (ou par l'implémentation de la lib C ?), nuance.

                            emacs250, bibliothèque(s)/librar[y/ies]/lib(s), pas librairie. Et il existe une API pour programmer le serveur graphique x11 hein :)



                            1) Moi je dis librairie, et c'est mon droit, ce n'est pas une erreur... C'est comme ceux qui disent "cool" ou "smiley", on leur crache pas directement dessus.

                            2) Ça je le sais, j'ai déjà programmer avec(et c'est pas aisé, hein?), de plus je disais que system() ne faisait pas parti de X11(Je ri encore en y pensant).
                            • Partager sur Facebook
                            • Partager sur Twitter
                              2 janvier 2008 à 13:18:16

                              -ed- t'es dur là.
                              une compilation conditionnel pour un system("pause") quand tu peux faire un printf suivi de getchar sur les deux sytèmes ...
                              de toutes manière, globalement system("") cay mal :D
                              (quoi moi troller? non j'exprime juste mon avis sans donner de raison valable ^^)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 janvier 2008 à 13:21:21

                                Citation : sloshy

                                -ed- t'es dur là.
                                une compilation conditionnel pour un system("pause") quand tu peux faire un printf suivi de getchar sur les deux sytèmes ...


                                Oui, enfin system(), ça ne sert pas qu'à faire des pauses !
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Music only !
                                  2 janvier 2008 à 13:50:07

                                  C'était pour l'exemple :-)
                                  Sous windows, je ne vois pas l'utilité d'utilisé system(), autant faire du batch ...
                                  Sous les unices, il y a beaucoup plus de commande et ça peut être avantageux (quoi que je prefere la solution donnée au dessus), j'avoue ne pas develloper sous ces plateformes.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    2 janvier 2008 à 14:05:06

                                    Citation : sloshy

                                    Sous windows, je ne vois pas l'utilité d'utilisé system(), autant faire du batch ...
                                    Sous les unices, il y a beaucoup plus de commande et ça peut être avantageux (quoi que je prefere la solution donnée au dessus), j'avoue ne pas develloper sous ces plateformes.


                                    Je ne vois pas trop ce que tu cherches à démontrer. On utilise system() quand on en a besoin. Point. Y'a pas de çaÿ mal/çaÿ bien...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Music only !
                                      2 janvier 2008 à 16:52:36

                                      Citation : -ed-

                                      Citation : -Skypers-

                                      Ok je ne savais pas que system() était portable. De toute manière, si vous souhaitez faire tourner un programme multi-plateforme, il n'est pas vivement pas conseillé d'utiliser system().


                                      Ben je ne vois pas pourquoi ... "Compilation conditionnelle", ça te parle ?



                                      Nan je ne connais pas la compilation conditionnelle, c'est typique du C ? (je suis passé en C++ depuis pas mal de temps). Donc si tu te sens de m'expliquer, merci ^^
                                      Ou alors, je connais peut être déjà, mais sans le savoir. Ne serait-ce pas un système basé sur les #define ?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        2 janvier 2008 à 17:00:15

                                        Citation : -Skypers-

                                        Ou alors, je connais peut être déjà, mais sans le savoir. Ne serait-ce pas un système basé sur les #define ?


                                        Oui, c'est ça. (et c'est pareil en C en C++)

                                        (A l'arrache ...)
                                        1. #ifdef WIN32
                                        2. #define CLS "cls"
                                        3. #elif defined linux
                                        4. #define CLS "clear"
                                        5. #else
                                        6. #error CLS is not defined for this platform
                                        7. #endif
                                        8. <...>
                                        9. {
                                        10.    system (CLS);
                                        11. }

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Music only !
                                          2 janvier 2008 à 19:14:43

                                          Ok, merci de la précision.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Anonyme
                                            2 janvier 2008 à 20:34:27

                                            Citation : -ed-

                                            Que les choses soient claires :

                                            CP/M -> DOS -> Windows 1.x, 2.x, 3.x, 95, 98, 2000 (shell : command.com)
                                            DEC -> NT -> Windows NT4, NT5 (XP), Vista ... (shell : cmd.exe)


                                            Si on te lit on voit que Windows 2000 n'est pas NT

                                            or sur Wikipedia j'y trouve ça :

                                            Citation : Microsoft Windows 2000 (Wikipedia)

                                            Windows 2000 provient directement du système d'exploitation Windows NT de Microsoft. À ce titre, Microsoft pensait à l'origine l'appeler Windows NT 5, mais préféra changer de nom.



                                            Je dois sans doute rien comprendre... :euh:
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              2 janvier 2008 à 20:36:15

                                              Citation : 21.c.la

                                              Je dois sans doute rien comprendre... :euh:


                                              Non, c'est moi qui confond ME et 2000.

                                              Je corrige
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Music only !
                                              Anonyme
                                                3 janvier 2008 à 11:29:39

                                                Citation : -ed-

                                                Citation : sloshy

                                                Sous windows, je ne vois pas l'utilité d'utilisé system(), autant faire du batch ...
                                                Sous les unices, il y a beaucoup plus de commande et ça peut être avantageux (quoi que je prefere la solution donnée au dessus), j'avoue ne pas develloper sous ces plateformes.


                                                Je ne vois pas trop ce que tu cherches à démontrer. On utilise system() quand on en a besoin. Point. Y'a pas de çaÿ mal/çaÿ bien...



                                                Je suis d'accord, system est parfois bien utile. Au lieu de lier une autre lib à mon projet SFML, un petit system("sleep 0.2");, ça va bien aussi.
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                system(" ");

                                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                • Editeur
                                                • Markdown