Also wenn jetzt so viele sagen das es nicht so funktioniert, dann lass ich es lieber.
Damit wäre das Thema dann auch closed.
p.s. Falls ich doch ne Lösung finde melde ich mich.
Du könntest im Code nachschauen:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=net/unix/af_unix.c;h=0b39b2451ea59958c0819c51faf337d000cbb88d;hb=HEAD
Wenn dich bissi mit BS internas beschaeftigst, kommst mit der Zeit drauf, das es eigentlich nur eine Antwort auf deine Frage geben kann: Automatisch !
Das BS weiss am besten, wie man threads schlafen legt, und mit dem wissen, welcher thread welchen Lock grad haelt, kann es sogar draus ableiten, wenn es sich lohnt nachzuschauen, ob der gelockte thread weiter machen koennte oder nicht. Das BS kann das meistens also viel besser haendeln wie du selbst.
DU haettest also schon nen Problem, eine effektive aufweckroutine zu schreiben ...
Also sieh den Mutex nur als Blocker in deinem Programmablauf an. Wenn der Lock aufgehoben wird, wird dein thread automatisch weiter ausgefuehrt. Manuell musst da gar nix machen.
Wie intern das BS das loest, darf dich gar nicht intressieren. Es nimmt das was es am besten kann ... vielleicht Signale, vielleicht Spinlocks mit gleichzeitiger aenderung der Prozessprio des threads, vielleicht irgendwas ...
Ciao ...
Servus,
Danke für die schnelle Hilfe. Mir war auch nie so ganz wohl mit dem system Aufruf. Jetzt habe ich alles auf QProcess umgestellt. Leider bleibt das Problem. Egal ob ich das Fenster der zweiten Anwendung über das Fenster-"x" oder über einen QProcess->kill() (bzw. QProcess->close(), QProcess->terminate()) schließen möchte, es schließt mir immer auch das Fenster der ersten Anwendung.
Hast du noch eine Idee?
Gruß,
flambert
Falls es jemanden interessiert, ich habe ein Weg gefunden das irgendwie zu lösen.
Und zwar schreibt man mit einer Programmiersprache ein Programm was einen ein Shell-Skript schreibt mit den benötigten Tastendrücke usw. Hierbei muss man immer vor jedem Aufruf mit zum Beispiel xdotool immer das Display in dieser Form angeben: "DISPLAY=:X" so kann man nun alles was man drücken will hintereinander ausführen.
Ist zwar ein wenig hässlich aber es funktioniert.
Gruß Dominik
hmm alles klar. hat sich erledigt.
Der Fehelr lag hier:
context = libnet_init(LIBNET_RAW4, NULL, errbuf);
Ich habe einmal (kaputtes)LAN onboard und eine weitere Netzwerkkarte. Es wurde immer die falsche Netzwerkschnittstelle genommen.
(Trotzdem sagt er nur "0 Bytes written". Aber das ist ein anderes Thema ;))
ggg_freak2003 schrieb:
Bash+sed+grep, Perl, Python?
grep hört sich ganz gut an. Wie könnte ich das in Verbindung mit Python umsetzen? Ich kenn mich mit Python leider nicht so gut aus.
Wenn du Python verwenden willst, nimm Reguläre Ausdrücke (Modul "re"). Grep sind Reguläre Ausdrücke für die Shell.
knivil schrieb:
Man koennte auch popen benutzen.
Das wäre natürlich einfacher gewesen. Macht aber nix, so spar ich mir den Shellaufruf und ich hab was gelernt.
mfg Martin
Hi,
Ich verwende splint ohne editiertes .splintrc, ferner habe ich ein Program das in etwa folgende Dateihierarchie hat:
./src/main.c
./other/src/* // versch. .c und .h
./include/* // headers, .h files
um das mit splint komplett durchtesten zu koennen, verwende ich folgendes Kommando
$ splint ./src/*.c -I./other/src/ -I./include/ -posixstrictlib -preproc -imptype
Splint 3.1.2 --- 20 Feb 2009
./other/src/MyTypes.h:49:37: Parse Error:
Suspect missing struct or union keyword: UInt16 :
int. (For help on parse errors, see splint -help parseerrors.)
*** Cannot continue.
Das splint kann da mein ge-typedef-tesUInt16 anscheinend nicht aufloesen, -help brachte auch nix
Fragen
1. gibt es keinen einfacheren Aufruf in so einer Situation, als _jeden_ include folder einzeln per -I angeben zu muessen?? Sowas wie 'recursive' bzw, lediglich die Ordner die auch im Makefile per -I angegeben werden wuerden??
2. Wie ist das mit dem 'UInt16' - der Typ ist in meinem Code getypedef't, in einem header file. Wenn splint schon nicht in der Lage ist, dass so zu akzeptieren, kann man diesen Check nicht irgendwie abschalten? Welches Flag?
Danke
Das hat nichts mit dem const zu tun. Ich mach mal ein Highlight, damit klar wird, was das Problem ist
"‘sockaddr**_in***’ to ‘const sockaddr*’"
Du musst das ganze einfach nur casten (sockaddr const*)&address .
btw. die 25 Leerzeilen hättest du dir sparen können und lieber die Zeilennummer in der Fehlermeldung angepasst. Dann wäre dein Posting besser zu lesen .
nman schrieb:
_matze schrieb:
Unter Windows wäre es ein Semikolon.
PATH=%PATH%;C:\myDir
Fällt Dir an dem Code-Statement da oben etwas auf, was diese Änderung von Doppelpunkt zu Semikolon nötig machen könnte?
Hehe, ja, macht Sinn...