hab das auch mal versucht, war aber nicht erfolgreich. dabei gab der compiler folgende fehlermeldung aus:
/usr/bin/ld: cannot find -lXtst
collect2: ld returned 1 exit status
da ich nicht weiss, durch welches packet ich auch das XTest.h file bekomme, hab ich einfach mal die folgenden packete installiert:
libxcb-xtest0-dev,libxcb-xtest0, libxext6, libxext-dev
fehlt mir dennoch ein packet oder irgendwo irgendein eintrag? muss ich die compiler-parameter ändern? was mache ich falsch?
hoffe, es stolpet in nächster zeit wieder jemand, der mir weiterhilft über diesen eintrag.
danke markus
PS: ich arbeite mit Ubuntu feisty
Hi,
Habe nun alles soweit hinbekommen. Jedoch bekomme ich noch bei der deklaration der static funktion folgenden Fehler:
Fehler: Elementfunktion »static void* network::client::helprecive(void*)« kann nicht deklariert werden, statische Bindung zu haben
Mein C++ Buch hat da leider auch keine antwort darauf.
Frohes Neues noch!
MFG ReduX
so,
ich weiß jetzt woran es lag das connect immer -1 zurück gegeben hat :
add.sin_addr = htons(atoi(_port))
...so gehts jetzt!
THX nochmal für eure beiträge
Gruss darrell
firefly schrieb:
Und ich glaube du hast das Problem noch nicht ganz verstanden auf das du gestoßen bist.
Das Problem ist nicht das erzeugen von dynamischen Elementen per "new" sondern wie die Methoden von erzeugten Objekten aufgelöst werden.
Wenn im Plugin nur reine Daten erzeugt werden und diese in ein im Hauptprogramm erzeugtes Objekt geladen werden, kann das Plugin nach dem laden der Daten sofort wieder entladen werden.
Du bist der Mann der Stunde!!! Zur Kenntnis genommen, verstanden, übernommen. Es geht. Danke! :xmas2: :xmas1:
DEvent schrieb:
fooblablubb schrieb:
<users> ALL=NOPASSWD: ALL
Das ist die Windows-Art: Einfach alle Users zum root machen.
...
Dein Vorschlag ist nicht schlecht aber das "s", also Mehrzahl ist unbeabsichtigt. Man kann da auch einfach _einen_ User eintragen. Dürfte am einfachsten sein.
wenn mtrace das nicht anzeigt, solltest du valgrind verwenden. das zeigt es dir fix an: http://www.valgrind.org/. versichere dich am besten, ob du die libgcrypt richtig verwendest. oft sind vermeintliche speicherlecks in bibliotheken anderer eine vergessene "clean-up-funktion" der lib, die man im programm aufrufen muss. solltest du dir sicher sein, dann poste einen bugreport für die libgcrypt.
das "-lLiC" muss hinter das "main.c".
außerdem kannst du in der .ccp-datei das extern "C" weglassen. das muss nur in der header datei stehen.
EDIT: irgendwie wäre das mal cool, einen sticky thread zu machen bezüglich undefined references und statische libs. das is jetzt in der kurzen zeit, in der ich hier bin, der dritte fall, dass genau das problem auftaucht.
Genau dafür ist select doch da. Wenn Du nach einem erfolgreichen select (der keine Zeit braucht wenn bereits irgendwo Daten anliegen) mit einer Schleife alle Sockets durchgehst, und diejenigen behandelst die gesetzt sind, verlierst Du nirgendwo Zeit. Du darfst nur nicht blockieren a la "jetzt les mal bis die Verbindung geschlossen wird".
Also im Wesentlichen:
1. fd_set herrichten mit allen geöffneten und horchenden Sockets
2. select()
3. Ist horchender Socket bereit? -> accept
4. Liegen Daten an Datensocket? -> recv
5. Liegen Kommandos am Kommandosocket? -> recv
6. goto 1
Wenn die Fragen 3, 4 und 5 gleichzeitig "nein" ergeben würden, wartet select (sofern Du einen Timeout > 0 angegeben hast), ansonsten kehrt select bereits zurück sobald eine der Bedingungen wahr wird.
Super! Ich danke euch allen herzlich, hat super funktioniert!
Habe die manpage mehrmals durchgeschaut allerdings habe ich da wohl die Sache mit dem NULL-pointer übersehen. hatte vorher immer execlp benutzt, welches meiner Meinung nach viel einfacherer ist! Mir wurde gesagt ich soll execvp benutzen, da es "besser" sei, was och immer das heissen soll
Nochmals danke allerseits!
threader schrieb:
Ah, vielen Dank für dein super Beispiel, auf das mit den Pipes bin ich selber noch nicht gekommen.
Damit wäre ja dann geklärt dass soetwas auch mit pthreads geht...
Eine kleine Frage hab ich aber noch:
Wie schafft es denn pthread_join auf einen Thread zu warten, ohne in einer Schleife den Thread-Status abzufragen? Diese Funktion teilt dem Aufrufer ja sozusagen "automatisch" mit, wann der Thread terminiert. Doch wie?
Gibt es dazu vll soetwas wie atexit für Threads?
Du kannst dir pthread_cleanup_push anschauen. Aber du weisst eigentlich immer wann du einen Thread beendest und kannst so dem Master bescheid geben. Und der Master kann jederzeit, wenn es ihm passt nach beendeten Threads schauen.