Anwendung in Shared Object identifizieren
-
Hallo,
ich baue mir gerade ein Shared Object, das später von mehreren Anwendungen (Browser, ...) benutzt werden soll. Funktiniert auch schon ganz annehmbar.
Ich würde jetzt gerne noch in meiner Library herausfinden, welche Applikation diese benutzt. Gibt es dafür eine Möglichkeit?
Nebenbei ich benutzte: C/C++ mit GCC 3.3.5 und Linux mit Kernel 2.6
Vielen Dank im Voraus
-
Naja, das kommt immer darauf an was genau du über die Anwendung erfahren willst. Am einfachsten wäre es vermutlich einfach /proc/<pid>/exe auszulesen, dort befindet sich ein Link auf das Binarie. Ansonsten findest du die Comandozeile in /proc/<pid>/cmdline und du könntest den Programmnamen über argv[0] erfahren.
Nachhteil, das procfs ist stark OS abhängig und es wäre natürlich dumm, wenn deine Library eigentlich portabel auf mehreren Unix Systemen läuft, du aber wegen solch einer Sache Inkompatibilitäten erzeugt.
Eine andere Sache ist die, dass argv[0] (der Programm aufruf) relativ unterschiedlich ausfallen kann und die Parameter auch nicht gegen Manipulation geschützt sind.