PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [bash|dialog] PID Menu von Netzwerkprogrammen und attachen



403
19-07-2007, 15:21
Hallo,

ich will ein Menu haben bei dem die PIDs aller Netzwerkprogramme zur
Auswahl gestellt werden, und man dann sich ggf. dran attachen kann.
Mit truss klappt das schon, gdb dumpt core :D Problem ist, dass der
dialog Aufruf einfriert :(

bisher (http://nopaste.de/p/aFEM4WVLqb)

Kann mir jemand mal einen Tip geben?

Gruss 403

jan61
19-07-2007, 21:24
Hi,

ich glaube, dass der read innerhalb der while-Schleife Dein Problem ist - Du leitest ja in dieser Schleife stdout von sockstat auf stdin von read um. Damit wird IIRC auch der innere read gefüttert (ist eben stdin dort). Versuch mal, statt der while-Schleife for zu nehmen, da Du ja - soweit ich das erkennen kann - eh nur eine PID übergibst, sollte der in diesem Fall problemlos laufen.

Jan

403
20-07-2007, 00:40
Schade, das war mein erstes
|while Konstrukt ;)

Also mit for friert das Ding bei purem Aufruf von truss nicht mehr ein.
Wenn man es mit dialog kombiniert hingegen schon :/ Kann es sein
dass dieses dialog nur einen bestimmten buffer an Daten verkraftet?

Ein weiterer Bug: Man moechte erst alle PID's mit Programm sehen und
dann wie eine Art File-Browser zwischen den PID's hin und hernavigieren.
Durch die jetzige Loesung sieht man immer nur eine PID.

Leider muss ich morgen zu einem wichtigen Termin und muss die Sache
jetzt erstmal aufs Eis legen. Hier die for variante:

http://nopaste.de/p/aROpwWMocb

jan61
21-07-2007, 21:27
Moin,

zuerst mal eine kleine Frage: Mit was für einem System arbeitest Du denn? Ich kenne truss bisher nur von Solaris, nicht von Linux. Und die Option --prgbox hat mein dialog auch nicht (kann aber sein, dass ich da nicht auf dem neuesten Stand bin).

Kann es evtl. sein, dass dialog mit fortlaufenden Programmausgaben nicht klarkommt?

Zu Deinem Problem mit dem Auswahldialog: Die Schleife sorgt doch gerade dafür, dass Du die PIDs nur häppchenweise siehst! Wenn Du mehrere PIDs anbieten willst, dann musst Du sie natürlich auch erstmal sammeln und dann in einem Menü anbieten.

Jan

403
24-07-2007, 16:52
Hallo Jan,

Ich nutze BSD und da heisst es truss. Den dialog Quellcode habe ich mir
noch nicht angesehen, vermute da aber einen definierten Buffer so dass
fortlaufende Angaben zu einem Freeze fuehren.

EDIT: In dialog.h ist MAX_LEN auf 2048 gesetzt.
progressbox.c benutzt dann in einem struct char line [MAX_LEN + 1 ]

Hier eine neuere Version der
progressbox.c (http://fresh.t-systems-sfr.com/linux/src/dialog-1.1-20070704.tgz:a/dialog-1.1-20070704/progressbox.c) (meine ist von 2006)