wenn du kein standard system verwendest, ist hal keine gute wahl. hal ist zu komplex. es braucht dbus zur kommunikation. das wiederum braucht einen dbus server. hal selbst ist auch ein server.
schau dir lieber udev bzw uevent an. per netlink socket werden events, wie zb. das anschließen eines usb sticks an ein userspace programm weitergeleitet.
so...habs hinbekommen. ich hab einfach vor der schleife die aktuelle zeit gelesen und am ende das selbe +50. und als bedingung das er die schleife nur ausführt wenn er die zeit+50 überschritten hat. so hat er genug zeit um die doppel-dreifach keycommands zu überspringen...und ich bin glücklich
manchmal ist es echt gut mal mit anderen darüber gesprochen zu haben.
DrGreenthumb schrieb:
nurf schrieb:
Diese sind aber nicht als Abhängigkeit in der A.so eingetragen, sondern als unaufgelöste Funktions-Referenzen --> Fehler 1
Diese musste ich voher per dlopen(B, RTLD_GLOBAL) laden um sie korrekt initialisieren und benutzen. Warum ?
Ist das ein sauberer Weg?
und wenn du sie nicht per dlopen lädst sondern normal mit -l an den linker gibst?
da müsstest du evtl. noch -rdynamic mit angeben
Normales Linken funktioniert, sofern ich dann auch Lib(B) dazulinke und soll explizit nicht durchgeführt werden.
Aber danke du hast vollkommen richtig mitgedacht.
manpage schrieb:
Functions registered using atexit() (and on_exit(3)) are not called if a process terminates abnormally because of the delivery of a signal.
strg-c ist sigint.
Guck dir mal den code von xmacro an, da müsste genau das sein was du suchst.
Ubuntu-Beschreibung
xmacrorec can be used to record mouse and keyboard events on any X11 display.
xmacroplay can be used to playback recorded events or send any other
mouse/keyboard events you choose. It is very handy for scripting an
X display - for example controlling a presentation in mgp or ultrapoint
from a script, network connection...
apt-get source xmacro
du musst selbst fork und exec verwenden. system kann dir das nicht bieten. popen könnte es. es wäre aber doppelt gemoppelt, da popen in dem fall die shell verwendet, um eine shell zu starten. sollte aber klappen. zumindest seh ich keinen grund, wieso nicht.
wichtig bei all dem ist aber, dass das aufzurufende programm das unterstützt. was du willst, ist eine interaktive session mit einem prozess. normalerweise klappt das nur mit einem user an einer konsole. die bash kann das mit option -i. sqlplus kenn ich nicht.
tyler78 schrieb:
Warum nicht...
Weil es unnötig umständlich ist.
Zum Thema Shell\1: Überleg Dir mal ganz genau, was Du machen möchtest, dann kannst Du gerne Fragen stellen.
netsvr.c, zeile 35:
my_addr.sin_port = port;
hier brauchst du noch die funktion htons für den port. htonl hast du schon für die adresse richtig verwendet.
netsvr.c, zeile 66:
*keysockfd = accept(sockfd, (struct sockaddr *) &clientdata, &sin_size);
du verwendest hier die adresse auf einen zeiger, da clientdata ja schon ein zeiger ist. das tempcd kannst du schon weglassen, da du es eh nicht mehr verwendest.
ganz klar ist mir nicht, wo das problem ist. du hast dub2 schon entdeckt. super. jetzt noch fork und ein exec* deiner wahl und fertig ist es. umleiten in eine datei bedeutet nur, dass du die datei nach dem fork öffnest und per dub2 einfach stdout zu diesem file descriptor umbiegst. die pipe brauchst du nur, wenn eltern und kindprozesse miteinander kommunizieren sollen.
blackdrake schrieb:
So, folgenden Code habe ich jetzt und es läuft alles wunderbar!
He danke fuer das Beipiel, gerade noch ein main und stl_libs dazu gefriemelt und ausprobiert, funktioniert einwandfrei! TOP
graetz
So, ich habe mich jetzt auf Eclipse geeinigt. Da muss ich nur noch Speichern drücken und es ist kompiliert Eclipse finde ich sehr gut, nur dass es ein wenig langsam ist
mfg
Jocker16 schrieb:
Aber an für sich halte ich es für unklug, dass ein Programm systemweit einfach so das Tastaturlayout ändert. Ich glaube, dass es nicht möglich ist, nur prozessweit das layout zu ändern (kann aber sein, dass ich mich irre)
Ich denke, dass die Änderung deines Programms auf die jeweilige X-Session beschränkt sein wird. Nach dem abmelden sollte alles wie vorher sein.
ethernet schreibt nun mal 64 byte mindestlänge pro paket vor. du wirst nichts anderes schaffen. dein zukünftiger briefbeschwerer ist vielleicht einfach nur komplett kaputt.
es kenn z.b. gut sein, dass die netzwerkkarte das padding erledigen, wenn das nötig sein sollte. das kannst du nicht umgehen.
Was Du vorhast, klingt nicht nach einer guten Idee. Gibt es denn keine Möglichkeit, die Library zu wrappen und die Änderungen über Deinen Wrapper durchzuführen?