Funkton in einen Prozess auslagern

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Funkton in einen Prozess auslagern

Beitrag von anno1988 »

hallo,

mich würde mal interessieren ob es in Qt auch möglich ist, eine Funktion in einen externen prozess auszulagern?

geht das ?

gruß anno
Willi2793
Beiträge: 147
Registriert: 29. September 2008 10:59
Kontaktdaten:

Beitrag von Willi2793 »

Ja. Stichwort für eigene Klassen: QThread und für externe Programme: QProcess
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

na ich meine eigentlich nicht externe programm in diesem sinn, dass ich eine datei aufrufe, sondern eine selbs geschriebene funktion als prozess auslagere.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

anno1988 hat geschrieben:na ich meine eigentlich nicht externe programm in diesem sinn, dass ich eine datei aufrufe, sondern eine selbs geschriebene funktion als prozess auslagere.
Prozess != Thread!!! Lies dir zu den beiden Stichpunkten mal die Wikipedia durch.

Wenn du UNBEDINGT eine eigene Funktion in einen anderen Prozess auslagern willst, musst du deine Funktion samt Parameterübergabe in ein eigenes Executable packen.
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

ja ich weiß was ein prozess und thread ist.

da kenne ich den unterschied. und meine frage habe ich schon richtig formuliert. Ich meine damit einen Sohnprozess

ich rede da von so etwas

http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html

allerdings halt in qt.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich würde einfach mal sagen - schau Dir an was Willi2793 geschrieben hat...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

anno1988 hat geschrieben:ja ich weiß was ein prozess und thread ist.

da kenne ich den unterschied. und meine frage habe ich schon richtig formuliert. Ich meine damit einen Sohnprozess

ich rede da von so etwas

http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html

allerdings halt in qt.
Dass du einen Sohnprozess haben willst, hast du bisher nicht gesagt, nur dass du eine Funktionen in einen neuen Prozess asulagern willst, was schon was anderes ist!

Der Sinn in Verbindung mit Gui-Programmierung entzieht sich mir vollkommen. Dafür gibt es auch keine eigene Klasse in Qt. Wehalb denn auch, ist ja nur die eine Funktion fork().

Weshalb muss es denn unbedingt ein frok() sein? Lässt sich das absolut nicht besser regeln? Kannst ja mal kurz erklären, was du vor hast.
burli
Beiträge: 25
Registriert: 3. August 2004 11:11

Beitrag von burli »

Das Stichwort dürfte eher QtConcurrent sein. Gibt es aber erst seit Qt4.4
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

naja also das stimmt eigentlich schon, dass ich eine funktion in diesem fork in einen externen prozess auslagern will.

da man mit qt auch konsolenanwendugne schreiben kann wollte ich das einfach mal wissen ob das funktioniert oder nicht.

innerhalb von diesem fork kann ich da alles mögliche machen, auch z.b. eine funktion als eigenständiger prozess laufen lassen.

denn es ist dann halt wieder umständlich das für verschiedene systeme immer extra zu programmieren.

wenn es in qt schon geben würde wäre das ja super.

aber so wie ich die Reaktion verstehe gibts das also nicht.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Naja, prinzipiell funktionieren tut es ja schon. Und du kannst es auch machen, wenn du meinst dass es Sinn macht. Ich denke das tut es nicht.

Dein fork() kopiert den GANZEN Speicherbereich deines Prozesses in einen neuen Bereich. Das alleine kann schon ganz schön dauern. Ein neuer Thread tut in deinem Falle genau das gleiche. Oder willst du wirklich für den neuen Kind-Prozess die komplette Prozessumgebung haben? Bezweifle ich.

In deinem Fall leite einfach von QThread ab, schreib dir setter/getter, für alle Daten die du brauchst, implementier run(), und gut ist.
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

stimmt ist auch ne gute idee, dann werde ich das mal so machen.
Antworten