C-Skript mit Argumenten starten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tyho
User
Beiträge: 31
Registriert: Samstag 18. März 2006, 13:47

Also ich will ein C-Skript mit 2 Argumenten und zwar folgendermaßen starten:
./rtson.c /dev/ttyS0 100
Das soll dann halt in ein Python-Skript
Ich habs schon mit

Code: Alles auswählen

execfile ("./rtson.c /dev/ttyS0 100")
und mit

Code: Alles auswählen

execfile ("./rtson.c", "/dev/ttyS0", "100")
ausprobiert, ging aber beides nicht. Geht sowas überhaupt mit execfile oder kann man damit nur Pythonskripte ausführen? Und wie sieht das dann aus?

mfg tyho
Das muss ich mal loswerden:
Wenn ihr euch mal wundert, was ich für dämliche Fragen stelle:
Ich bin ein Python-Newbie!
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Leider habe ich die gegebenden Skripte nicht, deshalb die Frage:
Welche Fehlermeldung gab es?
ryu
User
Beiträge: 41
Registriert: Dienstag 7. Februar 2006, 19:34

Hi,
vielleicht solltest du die Sourcedatei kompilieren. Dann kannst du die Binary normal mit Python ausführen. C ist nämlich keine Skriptsprache.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Die Datei musst du erstmal kompilieren, denn C-Code ist eigentlich nicht direkt ausführbar (außer du nutzt sowas wie Ch, CINT oder EiC). Dann kannst du das Programm über das subprocess-Modul starten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
tyho
User
Beiträge: 31
Registriert: Samstag 18. März 2006, 13:47

sorry das ich jetzt erst antworte
so ich glaube der code ist schon kompiliert, ich kenn mich bei c nicht aus, es gibt aber eine rtson.c und eine datei, die einfach rtson heißt und die ist ausführbar, habs grade ausprobiert.
so jetzt zu den fehlern:

Code: Alles auswählen

>>> execfile("/home/till/Documents/Steuerung/rtson /dev/ttyS0 10")
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
IOError: [Errno 2] No such file or directory: '/home/till/Documents/Steuerung/rtson /dev/ttyS0 10'
sowie

Code: Alles auswählen

>>> execfile("/home/till/Documents/Steuerung/rtson", "/dev/ttyS0", "10")
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: execfile() argument 2 must be dict, not str
Das erste ist mir klar, er versteht offenbar nicht, dass "/dev/ttyS0" und "10" Argumente sein sollen.
Mir fällt grad auf, dass er beim 2. auf jeden Fall schonmal die datei ausgeführt hat. Aber warum verlangt der ein dictionary, oder was ist dict? ich mein, wenn ichs direkt starte, ist das argument ja auch kein dictionary. warum verlangt er, wenn ichs über python mach, dann plötzlich eins?
Das muss ich mal loswerden:
Wenn ihr euch mal wundert, was ich für dämliche Fragen stelle:
Ich bin ein Python-Newbie!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

tyho, ich hab doch schon geschrieben dass man dazu subprocess und nicht execfile benutzt. Execfile ist für Python-Dateien gedacht, die vom Interpreter dann ausgeführt werden. subprocess startet dagegen externe Prozesse und das ist genau das was du suchst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
tyho
User
Beiträge: 31
Registriert: Samstag 18. März 2006, 13:47

ah sorry den satz habe ich überlesen
aber beantwortet genau meine frage
dankeschön :D
Das muss ich mal loswerden:
Wenn ihr euch mal wundert, was ich für dämliche Fragen stelle:
Ich bin ein Python-Newbie!
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Und immer wieder gern rausgesucht: [wiki]Neue Features#Subprocess[/wiki] 8)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Und immer wieder gern rausgesucht: [wiki]Neue Features#Subprocess[/wiki] 8)
Wahnsinn, hatte ich eine gute Idee das zu schreiben, wird wohl inzwischen die meistverlinkte Seite im Wiki sein ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
tyho
User
Beiträge: 31
Registriert: Samstag 18. März 2006, 13:47

die beschreibung ist wirklich gut
auch für newbies (wie mich) geeignet
Das muss ich mal loswerden:
Wenn ihr euch mal wundert, was ich für dämliche Fragen stelle:
Ich bin ein Python-Newbie!
tyho
User
Beiträge: 31
Registriert: Samstag 18. März 2006, 13:47

aber wie übergeb ich mit subprocess des argument?
Das muss ich mal loswerden:
Wenn ihr euch mal wundert, was ich für dämliche Fragen stelle:
Ich bin ein Python-Newbie!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

tyho hat geschrieben:aber wie übergeb ich mit subprocess des argument?
So wie im Wiki beschrieben: 'touch stamp', wobei stamp das Argument ist. Ebenso wie bei 'ls -l' wo -l das Argument ist. Stringoperationen lassen grüßen (ggf. Forensuche anwerfen).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
tyho
User
Beiträge: 31
Registriert: Samstag 18. März 2006, 13:47

vielen dank nochmal!
habs jetzt aber mit os.system() gemacht, da auf dem pc noch python 2.3 lief und ich nicht wirklich nachteile an os.system sehen konnte 8)
Das muss ich mal loswerden:
Wenn ihr euch mal wundert, was ich für dämliche Fragen stelle:
Ich bin ein Python-Newbie!
Antworten