+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Discussion: [Résolu] fonction system() C++

  1. #1
    Membre
    Date d'inscription
    January 2005
    Messages
    116

    15 [Résolu] fonction system() C++

    Bonjour à tous.

    Me revoila avec encore un problème de programmation. Je réalise en ce moment un programme qui appel un fichier exe. Je sais comment ouvrir se fichier (utilisation de la fonction system("Start mon_fichier.exe"); ). Mon problème est que j'aimerais pouvoir fermer se fichier plus tard de façon automatique.

    Existe t'il un equivalent pour fermé un fichier ouvert (par exemple system("Stop mon_fichier.exe").

    Merci d'avance pour vos réponses.
    Dernière modification par rackstar41 ; 06/07/2009 à 11h01.

  2. #2
    Rogntudju !!! Avatar de Lumbermatt
    Date d'inscription
    April 2005
    Messages
    4 717

    Par défaut Re : fonction system() C++

    Quel OS ?

  3. #3
    DarKou for Life Avatar de Kalessin
    Date d'inscription
    January 2005
    Localisation
    Paris
    Messages
    1 708

    Par défaut Re : fonction system() C++

    Euh,

    Tu veux dire quoi par fermer le fichier ?

    Si l'application que tu lances fais un fopen() sur un fichier ce dernier sera fermé soit quand :
    • l'application fera appel à fclose();
    • l'application quittera.
    Tu noteras que tu ne sortiras de system() uniquement lorsque l'application lancée avec quittera.

    Je vois pas très bien ce que tu veux dire en fait. En particulier par tes start et tes stop dans tes appels à system().

    system() ca prend juste un nom d'application a lancer.

    edit: Lumbermatt avec des .exe ça sent le windows quand même :>
    <niluje> windows est payant, pas linux, ça prouve bien que windows est mieux.
    <Clex> Ben niluje, quitte ta femme et va aux putes.

  4. #4
    Bowling Lightness Avatar de BlackSlayer
    Date d'inscription
    August 2007
    Messages
    990

    Par défaut Re : fonction system() C++

    Citation Envoyé par Kalessin Voir le message
    Euh,

    Tu veux dire quoi par fermer le fichier ?

    Si l'application que tu lances fais un fopen() sur un fichier ce dernier sera fermé soit quand :
    • l'application fera appel à fclose();
    • l'application quittera.
    Tu noteras que tu ne sortiras de system() uniquement lorsque l'application lancée avec quittera.

    Je vois pas très bien ce que tu veux dire en fait. En particulier par tes start et tes stop dans tes appels à system().

    system() ca prend juste un nom d'application a lancer.

    edit: Lumbermatt avec des .exe ça sent le windows quand même :>
    Il s'exprime mal sur le principe de fichier, mais il parle bien d'un exécutable. Quant au system(), je pense qu'il sait que ca ne prend pas start/stop (en tout cas, j'espère) mais c'est simplement pour montrer ce qu'il cherche a faire. Une commande pour lancer/arrêter le programme.
    Quant a fopen() et compagnie, l'API Windows inclus CreateFile(). S'il fait un programme "Windows only", c'est plus propre, encore une fois, à mon gout.

    Revenons en a nos moutons...

    Bon, déjà, system(), c'est un poil crade je trouve. IL ME SEMBLE que system() bloque le processus père. L'API de Win32 est quand même assez magique et dispose d'une plâtrée de fonctions qui font le café. Par contre, elles font peur à voir au début.

    Ta solution, a mon avis, c'est la fonction CreateProcess()
    CreateProcess Function (Windows)
    et TerminateProcess()
    TerminateProcess Function (Windows)

    Bon courage pour t'amuser avec ces fonctions =)

    @Kalessin: J'ai trouvé un stage, donc pour cet été, dès que Skurlat sera sur Paris, on pourra se faire une p'tite clocking day \o/
    Tu prends un Phenom TWKR je prends la mobale d'accord?
    Dernière modification par BlackSlayer ; 01/07/2009 à 22h07.

  5. #5
    Membre
    Date d'inscription
    January 2005
    Messages
    116

    Par défaut Re : fonction system() C++

    Citation Envoyé par BlackSlayer Voir le message
    Il s'exprime mal sur le principe de fichier, mais il parle bien d'un exécutable. Quant au system(), je pense qu'il sait que ca ne prend pas start/stop (en tout cas, j'espère) mais c'est simplement pour montrer ce qu'il cherche a faire. Une commande pour lancer/arrêter le programme.
    Quant a fopen() et compagnie, l'API Windows inclus CreateFile(). S'il fait un programme "Windows only", c'est plus propre, encore une fois, à mon gout.

    Revenons en a nos moutons...

    Bon, déjà, system(), c'est un poil crade je trouve. IL ME SEMBLE que system() bloque le processus père. L'API de Win32 est quand même assez magique et dispose d'une plâtrée de fonctions qui font le café. Par contre, elles font peur à voir au début.

    Ta solution, a mon avis, c'est la fonction CreateProcess()
    CreateProcess Function (Windows)
    et TerminateProcess()
    TerminateProcess Function (Windows)

    Bon courage pour t'amuser avec ces fonctions =)

    @Kalessin: J'ai trouvé un stage, donc pour cet été, dès que Skurlat sera sur Paris, on pourra se faire une p'tite clocking day \o/
    Tu prends un Phenom TWKR je prends la mobale d'accord?
    Bonjour et désolé pour ma réponse tardive.

    Effectivement, j'avais deja trouvé CreateProcess() et TerminateProcess() et comme tu l'as dit elle m'ont fais peur.

    Apparemment elles restent les solutions les plus propres, donc je vais m'atteler à comprendre ces fonctions.

    Merci.

  6. #6
    Bowling Lightness Avatar de BlackSlayer
    Date d'inscription
    August 2007
    Messages
    990

    Par défaut Re : [Résolu] fonction system() C++

    J'ai oublié un détail utile. CreateProcess va lancer un nouveau processus et donc, si tu as besoin que celui ci se termine pour continuer l'exécution du processus père, tu dois utiliser WaitForSingleObject() (check sur MSDN). Elle prend, entre autre, en paramètre, un Handle sur le processus fils crée, qui est un des paramètre de la fonction CreateProcess() qui va être initialisé durant l'exécution cette fonction.

    Si tu as besoin d'attendre la fin de plusieurs processus => WaitForMultipleObjects(). C'est la même que la single, mais celle-ci prend un tableau de Handle =)

    SI tu douilles avec ces fonctions, demande moi, je suis en plein dans l'API Windows ces temps-ci. (Qu'est ce qu'on fait pas quand on est bien payé en stage ...)

    PS: une fois le ou les processus fils terminés, n'oublie pas de clore le Process ET le Thread initialisés par CreateProcess()
    Un parfait code d'exemple => http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
    Dernière modification par BlackSlayer ; 06/07/2009 à 22h57.

+ Répondre à la discussion

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages