signalmaaan schrieb:
das zauberwort lautet signals!
man signal
man killall
killall sends a signal to all processes running any of the specified
commands. If no signal name is specified, SIGTERM is sent.
Hatte da so ne Idee.
Vl sendet der irc server kein \0 hinter dem string udn recv() liest daher ins unendliche.
Habe das getestet mit:
recv (sock, buf, 5, 0);
Und einfach einen Text getippt, welcher länger als 5 Zeichen ist.
Nun wird diesr angezeigt.
Problem gefunden, aber wie kann ich das beheben???
1. Gibt es vielleicht irgendeine magische Compiler/Linker Option die die Library einfach wrapt? Kann ich mir da vielleicht selbst nen Wrapper basteln?
jap davon hab ich irgendwo was gelesen!
GOOGLE MAL
uuuuuuuuuuuuuups....
das problem
auf 127.0.0.1 läuft ein ftp server, der anonymes einloggen erlaubt => d.h. das programm soltle eig. eine meldung geben... tuts aber net
außerdem fängts iwie nicth bei .1 an zu scannen ?
Hi!
kann mir vieleicht irgend jemand einen link posten, wo ich mir kylix3 runterladen kann?
ich weiss, dass dieses projekt eingestellt wurden ist, aber man findet nicht mehr mal die open edition im netz.
vielen dank
Also ich persönlich kann dir auch Gentoo sehr empfehlen. Habe damals bei meinem Umstieg von Windows auf linux mit Suse Linux angefangen, war allerdings sehr unzufrieden, da ich nie so ganz verstanden habe, wieso das so funktioniert wie es funktioniert.
Dann habe ich mir mal 3 Tage zeit genommen, um Gentoo zu installieren. Die Dokumentation ist meiner Meinung nach hervorragend, und man kann sehr viel von Linux selbst lernen, aber auch von den Konsolenbefehlen. Wenn du dir dann immer mal wieder etwas zeit nimmst, dein System zu administrieren, kommen die Befehle von selbst, da du immer wieder mal nach was neuem suchst...
wenn du eine große datei hast, die alle diese log meldungen enthält, ist grep sicher eine gute lösung. willst du aber immer nur eine einzelne zeile prüfen, so könnte die verwendung der bash internen regex performanter sein, da nicht jedesmal grep aufgerufen werden muss.
if [[ "[Tue Jul 22 07:54:11 2008] [error] [client 91.66.247.162] ...HIER NUN FEHLERMELDUNG... " =~ \[[^]]*]" "\[[^]]*]" "\[[^]]*" "([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})]" ".* ]]; then
echo ${BASH_REMATCH[1]}
fi
das gibt dir die ip aus. ja nachdem, wie du die () in der regex positionierst, kannst du andere teile der log emldung ausgeben.
Mit qt3 ( anstelle von qt3-mac ) kommt es schon besser.
Trotzdem ergibt sich wieder folgende Ausgabe. Kann mir jemand sagen, was das genau heissen soll und was gemacht werden muss, dass es richtig kompiliert?
g++-4.0 -c -pipe -Wall -W -Os -DNDEBUG -ffast-math -D__DARWIN_X11__ -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/opt/local/lib/qt3/mkspecs/default -I. -I/opt/local/include -I/Developer/SDKs/MacOSX10.4u.sdk/usr/X11R6/include -I/opt/local/lib/qt3/include -I/include -o multiDiagMatrix.o multiDiagMatrix.C
multiDiagMatrix.C: In constructor 'MultiDiagMatrix::MultiDiagMatrix(int, const std::vector<int, std::allocator<int> >&, const std::vector<int, std::allocator<int> >&)':
multiDiagMatrix.C:47: warning: comparison between signed and unsigned integer expressions
multiDiagMatrix.C:48: warning: comparison between signed and unsigned integer expressions
multiDiagMatrix.C: In member function 'double& MultiDiagMatrix::operator()(uint, uint)':
multiDiagMatrix.C:130: error: invalid initialization of non-const reference of type 'double&' from a temporary of type 'boost::numeric::ublas::sparse_vector_element<boost::numeric::ublas::compressed_vector<double, 0ul, boost::numeric::ublas::unbounded_array<size_t, std::allocator<size_t> >, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >'
multiDiagMatrix.C: In member function 'void MultiDiagMatrix::outputMat(FILE*)':
multiDiagMatrix.C:160: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
multiDiagMatrix.C:161: warning: format '%d' expects type 'int', but argument 3 has type 'long unsigned int'
make: *** [multiDiagMatrix.o] Error 1
Vielen Dank!
besserwisser schrieb:
klar lässt sich der server code ändern. das ist der sinn von open source. zumindest einer der beiden großen. du kannst jedes programm an deine ansprüche anpassen. wenn es eine sinnvolle funktion ist, könnte sie vielleicht sogar in das projekt offiziell aufgenommen werden. du könntest eine erweiterung für das server programm schreiben, damit man plugin laden kann, die dann zu verschiedenen ereignissen im server programm ausgeführt werden. zb eben ein "sende signal an prozess x" plugin.
theoretisch geb ich dir recht aber in der praxis ist das viel zuviel aufwand für viel zuwenig nutzen
falls niemand mehr ne andere idee hat schreib ich einfach noch nen dritten prozess der mit root rechten läuft und den client mit ner named pipe über neue dateien informiert
dann kann ich lsof benutzen und der clientprozess läuft weiterhin mit userrechten
@Gh0str1d3r hast du ne multithreading anwendung?
wenn ja, analysiert KCacheGrind alle threads?
gprof hat bei mir immer nur den hauptthread analysiert, habs aber auch nicht sooo lang probiert.
Mein Ziel war letztendlich, eine Liste aller verfügbaren Auflösungen zu erstellen und zwischen diesen dann auch umschalten zu können. Daher - denke ich - komme ich um eine Erweiterung nicht herum.
Ich habe bereits Linux in einer virtuellen Maschine laufen, leider hab ich mehr oder weniger Probleme mit der Netzwerk-Konfiguration.
Vor einiger Zeit lief alles wunderbar, seit einigen Wochen aber kommt einfach keine Netzwerkverbindung mehr zustande.
Leider habe ich auch nicht die Zeit mich damit lange zu befassen, da ich morgen die Ausgabe abgeben muss und es schön wäre wenn ich das ganze heute noch zum laufen bekomme.
Deshalb den Webserver unter Windows und das script möglichst dort einbinden
Ich hoffe es gibt da eine Möglichkeit
Gruss,
Lalas
zunächst solltest du in jedem Fall vermeiden, dass Objekte in 2 Threads leben. Ein Objekt im Nebenthread sollte auch dort erzeugt werden.
Als ich zu dem Punkt gekommen bin, dass ich ein Programm schreiben musste, was Mulithreadening und die Steuerung bestimmter Geräte können sollte, bin ich dazu übergegangen, Qt zu verwenden. Das kann ich wirklich weiterempfehlen, da die dort zur Verfügung gestellten Funktionen deutlich komfortabler sind als reines c++ (auch wenn man nicht GUI programmiert)
ingobulla schrieb:
targets=$(ls ./boost/lib/libboost_*-gcc??-mt-?_??.so)
Hier liegt zwar noch nicht dein Problem, aber das ls ist überflüssig:
targets=./boost/lib/libboost_*-gcc??-mt-?_??.so
Und ganz nebenbei funktioniert das so nicht für boost 1.34.1
ingobulla schrieb:
sed -n "s/a/A/g" ${i} > ${i}
Autsch!
Du liest und schreibst hier nicht die Variable $i, sondern die Datei mit Namen $i! Da die Shell bereits die leere Datei für die Ausgabe anlegt, bevor sed überhaupt anfängt zu arbeiten, liest sed also eine leere Datei, und du hast gerade alle deine Boost-Libraries auf Größe Null reduziert...
Ach ja, und mit dem -n würde sed in der Form sowieso nichts ausgeben.
So sollte die Zeile funktionieren:
i=$(echo $i | sed "s/a/A/g")
u_ser-l schrieb:
is' doch ganz einfach:
FILENAME=$(cat foo|grep '<REF HREF'|sed 's/<REF\s*HREF\s*=\s*"//'|sed 's/".*//')
Der Variablen FILENAME wird zugewiesen die Ausgabe der Pipeline, die in $(...) steht.
Mit grep sucht man sich die Zeile(n) mit <REF HREF heraus.
sed 's/foo/bla/' ersetzt foo durch bla. Hier noch angereichert mit \s* (steht für beliebig viel whitespace) und .* (steht für beliebige Zeichenfolge).
Das erste sed in der Pipe ersetzt <REF HREF = " (mit beliebigem whitespace dazwischen) durch 'gar nichts', das zweite sed ersetzt die Anführungszeichen " und alle folgenden Zeichen durch 'gar nichts'.
Übrig bleibt in $(...) also der Dateiname.
Ein gutes Beispiel für "useless use of cat". Statt
cat foo|grep '<REF HREF'
ginge auch
grep '<REF HREF' foo
oder im ersten Beispiel ist noch ein überflüssiger doppelter sed-Aufruf drin. Stat
cat foo|sed 's/<REF\s*HREF\s*=\s*"//'|sed 's/".*//'
einfacher
sed 's/<REF\s*HREF\s*=\s*"//; s/".*//' foo
Alles ungetestet, aber das Prinzip sollte klar sein.