Executer fichier c

Résolu
Bonjour,

Je souhaite executer un fichier C avec des paramètres à partir de mon script en python mais je n'y parviens pas !

J'arrive à executer ce fichier avec une commande système (./monfichier arg1 arg2 arg3 arg4) mais je n'arrive pas à l'inclure dans mon script !

Je suis sous debian sur un raspberry :)

Merci

4 réponses

  1. Oui, effectivement, je suis toujours avec la version 2 de python ^^

    impeccable, ca fonctionne, il me semblai avoir testé cette solution mais ca devait etre avec un test de commande systeme ^^

    Merci :)
    1. Ok, j'ai mon script python et mon programme compilé dans le meme dossier mais quand la commande du script s'execute, j'ai une erreur :

      Traceback (most recent call last):
      File "test.py", line 28, in <module>
      subprocess.call(["radioEmission", "0", "666", "2", "on"])
      File "/usr/lib/python2.7/subprocess.py", line 493, in call
      return Popen(*popenargs, **kwargs).wait()
      File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
      errread, errwrite)
      File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
      raise child_exception
      OSError: [Errno 2] No such file or directory


      Et vu que je suis une bille en python...

      Merci en tout cas :)
      1. Contributeur
        Comme "radioEmission" n'est pas une commande système, tu dois préciser le répertoire où elle se trouve. Sous Linux, cela sera sous la forme "/chemin/vers/radioEmission" par exemple, ou "./radioEmission" si l'exécutable se trouve dans le répertoire courant.

        Si tu utilises Python 3.5, call() fonctionne toujours, mais est considérée obsolète, remplacée au profit de run() : https://docs.python.org/3.5/library/subprocess.html#using-the-subprocess-module.

        Dal

        edit : je vois que tu dis que tu es sous Debian. Sous Debian, tu n'auras pas accès à 3.5 par les paquets à moins que tu n'aies installé Python à partir de Debian sid (unstable). Comme c'est peu probable, tu devrais toujours être en version 2.7, ou un truc du genre.
    2. Exact, c'est pour cela que je n'ai pas d'extension ^^

      Je suis allé voir au lien que tu m'a passé mais je n'ai pas compris comment utiliser subprocess... :/
      1. Salut,
        ça marche comme ça :
        import subprocess
        subprocess.call(["monfichier", "arg1", "arg2"])


        monfichier doit être dans le répertoire depuis lequel on appelle le script.

        Si tu veux récupérer la sortie standard de ton programme en C, il faut utiliser subprocess.check_output