Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Python-Programm in LUA aufrufen, aber nicht warten bis es beendet ist

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

19.02.2013, aktualisiert 23:26 Uhr, 2914 Aufrufe, 5 Kommentare

Hallo Zusammen,
ich hab mal wieder eine Frage:
ich muss mit der Programmiersprache LUA ein Python-Programm starten.
Das ist soweit kein Problem. Das Python-Programm benötigt allerdings etwas Zeit bis es beendet ist. Solang will/kann ich nicht mit dem LUA-Programm warten.
Gibt es eine Möglichkeit das Python-Programm aufzurufen und anschließend sofort im LUA-Programm weiterzuarbeiten ohne auf das Beenden des Python-Programms zu warten?

Danke
mabue88
Mitglied: 64748
19.02.2013 um 12:48 Uhr
Hallo mabue88,

eine spontane Idee, ich bin kein Programmierer: fork. Also unter Unix/Linux wird man das so machen, dass das Lua-Programm mit dem fork-Systemaufruf das Python-Programm startet. http://de.wikipedia.org/wiki/Fork_(Unix)
Du schreibst nicht, auf welchem Betriebssystem Du programmierst, aber unter Windows sollte es was Vergleichbares geben.


Für Perl gibt es fork als Systemaufruf, Python und Lua kenne ich nicht, aber für Lua sollte es das auch geben.

Markus
Bitte warten ..
Mitglied: mabue88
19.02.2013 um 13:52 Uhr
Hallo Markus,

prima Hinweis. Habs hinbekommen.
Ich programmiere in Linux/Debian auf einem Raspberry Pi.

Hier meine Lösung:

posix-Paket installieren:
01.
sudo apt-get install lua-posix-dev
Danach kann das LUA-Programm angepasst werden:
01.
	local posix = require "posix" 
02.
	local pid = posix.fork() 
03.
	 
04.
	-- Wenn PID = 0, dann handelt es sich um das Kind 
05.
	if(pid == 0) then 
06.
		os.execute("./python_prog.py") 
07.
	end
Damit funktioniert das wunderbar!
Danke!
Bitte warten ..
Mitglied: mabue88
19.02.2013 um 23:26 Uhr
Leider bin ich doch noch nicht ganz am Ziel.

Die mit dem Code erzeugen Kinderprozesse werden nicht beendet. Das heisst, dass ich irgendwann zig hunderte Prozesse am Laufen habe. Das heisst ich muss den erstellen Kindprozess nach dem "os.execute()" gezielt beenden.

Aber wie macht man das?
Bitte warten ..
Mitglied: 64748
19.02.2013, aktualisiert um 23:43 Uhr
Wie gesagt, ich bin kein Programmierer, vielleicht postet hier noch jemand der sich besser auskennt.

Du kannst den Kindprozess anhand der PID killen, ggf. auch per Name. Hier http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammie ... steht was. Die Sache mit dem fork ist eigentlich sehr gut dokumentiert. Im Zweifel kannst Du mit parsen z.B. von
ps -e
herausfinden, welche PID der Prozess hat. Normalerweise sollte aber auch der fork-Aufruf in Lua die PID zurückgeben, aber das sind Dinge mit denen ich mich nicht gut auskenne.

Wichtig ist, dass Du verstehst, dass fork ein Unix-Systemaufruf ist, das hat mit der jeweiligen Programmiersprache nur am Rande zu tun.

Generell suche mit Google nach "Unix-Systemprogrammierung", da findest Du die nötigen Infos (hoffentlich).

Markus
Bitte warten ..
Mitglied: mabue88
28.02.2013 um 17:59 Uhr
Ich habe das Problem jetzt so gelöst:

In dem LUA-Skript rufe ich ein Programm auf, das ich in C geschrieben habe. Die ganze Sache mit dem fork erledige ich dann in diesem Programm. Der Elternprozess wird geschlossen, das LUA-Skript läuft weiter und der Kindprozess kann vor sich hinarbeiten.

@64748: Danke für deine Unterstützung!
Bitte warten ..
Ähnliche Inhalte
Python

Python: Programm zur Active Directory Suche

Frage von Richard97Python3 Kommentare

Hallo, ich bin gerade dabei ein Programm zu machen um verschiedene Daten aus dem Active Directory auszulesen , jedoch ...

Entwicklung

Ping per Lua Script

gelöst Frage von 121851Entwicklung1 Kommentar

Hallo zusammen, kann mir jemand sagen wie ich einen PC per Lua Script anpingen kann? Kann jemand die Sprache? ...

Python

Python sshpass

gelöst Frage von tommaxPython2 Kommentare

Hallo zusammen, ich habe ein Problem, was mich langsam zum Verzweifeln treibt Ich habe 2 Raspberrys, die ich einfach ...

Entwicklung

HTML Link aufrufen per Batch?VBS?JAVA?Python?

gelöst Frage von fuguEntwicklung4 Kommentare

Hey ho Coder-Gemeinde! Zugrunde liegt eine Software, mit der ich regelbasiert irgendetwas ausführen kann - eine DOS Batch, oder ...

Neue Wissensbeiträge
CMS
Erneut kritische Zero-Day-Lücke in Drupal
Tipp von Reini82 vor 6 StundenCMS

Laut einem Bericht auf t3n gibt es eine Schwere Sicherheitslücke in Drupal die auch schon ausgenutzt wird. Betroffen sind ...

Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 1 TagSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 1 TagWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Heiß diskutierte Inhalte
Windows Server
Alten DC entfernen
gelöst Frage von smartinoWindows Server27 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...

Ausbildung
Wie gelingt ein guter Einstieg in die FiSi-Ausbildung? (Umschulung)
Frage von SiAnKoAusbildung26 Kommentare

Schönen guten Tag, ich bin SiAnKo und habe seit dem 1.04.2018 eine Umschulung als FiSi angefangen. Ich möchte natürlich ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
gelöst Frage von Bommi1961Batch & Shell21 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...

Windows 10
Unter Windows 10 Home 64Bit (1709) kommt Fehler beim Aufruf von verschiedenen Systemprogrammen wie z.B. Gerätemanager
Frage von bitshopWindows 1017 Kommentare

Hallo, beim meinem Onkel haben wir seit längerem das Problem, dass z.B. beim Aufruf des Gerätemanagers eine Fehlermeldung kommt ...