2010-11-24 8 views
2

Gibt es eine Möglichkeit, Daten (ex: int-Wert) von einem Prozess zu einem anderen Prozess in c zu übergeben?Wie Daten von einem Prozess zu einem anderen in c übergeben?

In meiner Erfahrung, wir Signal von einem Prozess zum anderen senden können. Aber es sieht so aus, als ob es keine Möglichkeit gibt, einige Informationen zusammen mit diesem Signal an einen anderen Prozess "anzuhängen".

+0

Welche Plattform ist das? – birryree

+0

Linux (Ubuntu). – root

+3

Auch wenn Sie keine Daten auf Signale anschließen könnten Sie noch Signale verwenden könnte, über 'SIGUSR1' ein Bit zu einem Zeitpunkt übertragen und' SIGUSR2' ... ;-) –

Antwort

1

Mit der Funktion sigqueue können Sie eine einzelne Ganzzahl oder einen Zeiger zusammen mit einem Signal übergeben (aber denken Sie daran, Zeiger sind nutzlos, wenn das Ziel des Signals ein anderer Prozess ist, da verschiedene Prozesse keinen Adressraum teilen)).

Einige andere Methoden sind Rohre, gemeinsam genutzten Speicher (POSIX oder SysV-Stil), Dateien, ...

+2

... Steckdosen :-) –

1

Sie eine der verschiedenen verfügbaren Kommunikationsmechanismen Inter-Prozess verwenden können.

Verwenden Sie Google. Als Referenz können Sie auch suchen here

0

Eine saubere, tragbare, leistungsstarke Art und Weise verwenden Sockel ist.

0

können Sie Rohrleitungen verwenden, das zu tun. Der Hauptzweck von Pipes besteht darin, Daten zwischen verschiedenen Prozessen zu kommunizieren.

Pipes sind die einfachste Mechanismus durch das Betriebssystem für die Interprozesskommunikation angeboten. Eine Pipe ist ein Kommunikationspuffer zwischen zwei Prozessen: Sie hat zwei Deskriptoren, einen zum Schreiben eines anderen zum Lesen. Schreib- und Leseoperationen werden in einer FIFO-Reihenfolge (first-in-first-out) durchgeführt.

Es gibt zwei Arten von Rohren: unnamed Rohre und Named Pipes (auch als FIFOs bekannt).

  • Unbenannte Pipes erlauben nur die Kommunikation zwischen hierarchisch verwandten Prozessen (Eltern- und Kindprozesse);
  • Named Pipes ermöglichen die Kommunikation zwischen jedem Prozess. Eine spezielle Datei wird durch
  • im Dateisystem erstellt

Wenn Sie einige Beispiel-Code wollen hier nur gehen:http://pastebin.com/1W216nyN

-1

Ich denke, wir globale Variable zwischen Prozess verwenden können, nicht sicher, aber. Wenn jemand versucht, dann lass es mich wissen. Wenn wir einen Header verwenden, der extern valriable enthält, können wir dies in einem anderen main() verwenden, der nichts anderes als ein unabhängiges Programm (Prozess) ist. aber wir müssen die beiden main() miteinander verbinden, die ausgeführt werden.

+0

No können Sie 't, Prozesse Speicherräume sind voneinander isoliert. Die 'extern'-Klausel wird verwendet, um externe Variablen von einer anderen Kompilierungseinheit (Quelldatei) zu deklarieren.
Und Sie können nicht zwei Hauptfunktionen "verknüpfen". – philant

Verwandte Themen