Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Entwicklung

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

19.02.2013, aktualisiert 23:26 Uhr, 2650 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: hmarkus
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: hmarkus
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.

@hmarkus: Danke für deine Unterstützung!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(4)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 10
Druckerwarteschlange beendet sich (16)

Frage von Hanuta zum Thema Windows 10 ...

Python
Python - ausgabe formatieren

Frage von BadFsaadKl zum Thema Python ...

Batch & Shell
gelöst Cmd Befehle in Powershell GUI aufrufen (5)

Frage von Markus2016 zum Thema Batch & Shell ...

Microsoft Office
32 Bit CAD Programm und Excel 64 Bit geht nicht (5)

Frage von GrueneSosseMitSpeck zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (17)

Frage von Unwichtig zum Thema Netzwerkmanagement ...