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 tourner un programme en background?


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Par défaut Comment faire tourner un programme en background?
    Salut tout le monde !
    Je travaille sous linux et j' ai un programme écrit en C,
    et je voudrai faire tourner ce programme en background,et se lance automatiquement a chaque démarrage de la machine, une sorte de démon quoi!
    Mais je ne sait pas comment proceder!
    Donc si vous avez qlq idées je suis preneur?
    Merci et A+

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut
    Bonjour,
    Pour mettre ton code en background tu peux tester ceci :

    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
     
     
    int main()
    {
      pid_t pid;
     
      if(pid =  fork()) 
      { 
         /* On quitte le processus père */
         exit(0); 
      } 
      else 
      { 
       /*  On rend le fils indépendant de tout terminal */
       setsid(); 
     
      /* Ici met ton programme */
     
      }
      return (0);
    }
    Pour info :
    man setsid
    man fork

    Pour ce qui est de lancer un programme au démarrage de linux, tout dépend si tu veux lancer le programme au démarrage de l'ordi ou de la session.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 168
    Par défaut
    Citation Envoyé par cyranno Voir le message
    Salut tout le monde !
    Je travaille sous linux et j' ai un programme écrit en C,
    et je voudrai faire tourner ce programme en background,et se lance automatiquement a chaque démarrage de la machine, une sorte de démon quoi!
    Mais je ne sait pas comment proceder!
    Donc si vous avez qlq idées je suis preneur?
    Merci et A+
    Bonjour,

    je pense que tu n'es pas sur le bon forum.

    si j'ai bien compris , ton programme est déjà écrit en C et t'as que le binaire.

    Pour lancer un script en arrière plan, et ainsi reprendre la main sur le terminal, il suffit de le faire suivre par le caractère "esperluette" ( & )

    Cordialement,

    Turbo_chess

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Tu n'es pas sur le forum. Tu auras plus de chance de trouver une réponse rapide par ici.
    http://www.developpez.net/forums/forumdisplay.php?f=17

    En attendant, tu peux déjà lire ceci. L'écriture et la mise en place d'un démon y sont expliquées.
    http://www.lea-linux.org/cached/inde...t-daemons.html
    Obligation d'être root bien sûr.

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par aoyou Voir le message
    Obligation d'être root bien sûr.
    Et moi qui pensais que la premiere mesure de securite etait de ne pas faire tourner les demons comme root.

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Pour lancer un programme en arrière plan et qu'il ne soit plus attaché à la console, il faut le lancer avec nohup (à moins que le programme ne se démonise lui-même, comme par exemple avec la méthode de BaZoR) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nohup ~/le/bon/chemin/mon_programme [mes arguments] &
    Ensuite, pour le lancer automatiquement au démarrage, je te conseil de faire une recherche sur ce forum, tu y trouveras pleins de sujets traitants de ce que tu souhiates faire.
    Tu peux aussi regarder dans le forum de ta distribution, car il existe aussi des solutions spécifiques.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    On peut lancer le processus père en root puis basculer en "effective user" lambda.

    En principe pour un demon unix :
    fork
    fork
    setsid
    cd / (chroot au besoin pour un "jail daemon")
    umask
    seteuid

    Après il faut aussi gérer les flux stdin/out/err, les handlers de signaux ... etc


    Plus d'explications :
    http://lionel.tricon.free.fr/Article...icle_demon.pdf

Discussions similaires

  1. Z/Os ; MVS + comment faire tourner un programme JAVA ?
    Par piboula dans le forum Langage
    Réponses: 2
    Dernier message: 28/07/2009, 18h16
  2. Faire tourner un programme C en background
    Par Yunchi dans le forum Débuter
    Réponses: 5
    Dernier message: 31/03/2009, 13h16
  3. Comment faire tourner un programme en C sous linux ?
    Par petitclem dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/06/2008, 18h49
  4. faire tourner un programme C en background sous windows
    Par Filomenom dans le forum Windows
    Réponses: 10
    Dernier message: 17/02/2006, 19h16
  5. Comment faire patienter un programme ?
    Par JlouisI dans le forum Débuter
    Réponses: 4
    Dernier message: 03/03/2003, 12h11

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