Hallo,
gibt es die Möglichkeit, einer Anwendung über ihre PID, Parameter zukommen zu lassen?
Also angenommen „abiword“ wäre gestartet und hätte die PID 1000.
Und nun möchte ich PID 1000 die Datei „/irgendwo/datei.doc“ zuschicken.
Geht das? Und wenn ja - wie?
Grüsse
K.
Hallo Klaus.
gibt es die Möglichkeit, einer Anwendung über ihre PID,
Parameter zukommen zu lassen?
angenommen „abiword“ wäre gestartet und hätte die PID 1000.
Und nun möchte ich PID 1000 die Datei „/irgendwo/datei.doc“
zuschicken.
Geht das?
Nein, das geht nicht. Du willst nachträglich Interprozesskommunikation
zwischen bereits laufenden Prozessen machen. Das klappt nur, wenn
Deine Zielanwendung aktiv auf Eingaben anderer Prozesse lauscht, was
bei Abiword nicht der Fall ist.
Interprozesskommunikation muss schon explizit in eine Anwendung
programmiert werden, sie wird dann zu einem Server. Dieser lauscht
dann üblicherweise auf einem von ihm geöffneten Socket über das
Netzwerk per TCP- oder UDP-Protokoll auf Deine Anfragen.
Die Verwendung eines Netzwerkprotokolls hat den großen Vorteil, dass
es prinzipiell unerheblich ist, auf welchem Rechner sich das
Clientprogramm dann befindet.
Ein Beispiel, was man mit X-Windowsanwendungen unter Linux/KDE
per Interprozesskommunikation machen kann, findest sich
unter http://www.wer-weiss-was.de/cgi-bin/forum/showarchiv…
Gruß,
-Andreas.
Hallo,
gibt es die Möglichkeit, einer Anwendung über ihre PID,
Parameter zukommen zu lassen?
So direkt gehts nicht.
Aber wie wäre es damit (freches Cut+Paste aus dem Perl manual):
Named pipes
A named pipe (often called a FIFO) is an old UNIX mechanism for setting up pipes between unrelated processes.
The names in question exist in the filesystem, which is just a funny way to say that you can put a special file in the filesystem that has another process behind it instead of a disk.
A FIFO is convenient when you want to connect a process to an unrelated one. When you open a FIFO, the program will block until there’s something on the other end.
To create a named pipe, use the UNIX command mknod(1) or, on some systems, mkfifo(1). These commands may not be in your normal execution path.
mkfifo $path/$fifoname
Damit könntest Du in Prozess1 abfragen:
„Wenn in der fifo ein Dateiname steht, dann bearbeite und gehe wieder an Ausgangspunkt zurück. Wenn in der fifo END steht, dann beende.“
Und in Prozess2 machen: „Datei schreiben, wenn fertig, dann Dateiname in die fifo packen.“
Rest dürfte Google helfen…
Gruss,
Mike
Hallo,
und danke erstmal für die Antworten.
Grüsse
K.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Mike,
angenommen „abiword“ wäre gestartet und hätte die PID 1000.
Und nun möchte ich PID 1000 die Datei „/irgendwo/datei.doc“
zuschicken.
mkfifo $path/$fifoname
Damit könntest Du in Prozess1 abfragen:
„Wenn in der fifo ein Dateiname steht, dann bearbeite und
gehe wieder an Ausgangspunkt zurück. Wenn in der fifo END
steht, dann beende.“
Und in Prozess2 machen: „Datei schreiben, wenn fertig, dann
Dateiname in die fifo packen.“
Kannst Du mir etwas genauer erklären, wie Du in dem
konkreten Beispiel der Textverarbeitung abiword per
FIFO eine Datei zuschicken willst?
So richtig vorstellen kann ich mir das noch nicht,
aber ich lerne gerne was Neues dazu …
Gruß,
-Andreas.