Bei den meisten IPC (InterProcess Communication)-Mechanismen lautet die generelle Antwort auf Ihre Frage: Prozess A ruft den Kernel auf und übergibt einen Zeiger auf einen Puffer mit Daten, die an Prozess B übertragen werden sollen. Prozess B ruft den Kernel auf (oder ist bereits bei einem Aufruf an den Kernel blockiert) und übergibt einen Zeiger auf einen Puffer, der mit Daten von Prozess A gefüllt werden soll.
Diese allgemeine Beschreibung gilt für Sockets, Pipes, System V Message Queues, normale Dateien usw. Wie Sie sehen können, ist der Kommunikationsaufwand hoch, da mindestens ein Kontextwechsel erforderlich ist.
Signale stellen einen asynchronen IPC-Mechanismus dar, bei dem ein Prozess eine einfache Benachrichtigung an einen anderen Prozess senden kann, die einen vom zweiten Prozess registrierten Handler auslöst (alternativ kann der Prozess nichts tun, anhalten oder den Prozess beenden, wenn kein Handler registriert ist, je nach Signal).
Zur Übertragung großer Datenmengen kann man System V Shared Memory verwenden, bei dem zwei Prozesse auf denselben Teil des Hauptspeichers zugreifen können. Beachten Sie jedoch, dass auch in diesem Fall ein Synchronisationsmechanismus wie System V Semaphores benötigt wird, was ebenfalls zu Kontextwechseln führt.
Deshalb ist es ratsam, wenn Prozesse oft kommunizieren müssen, sie zu Threads in einem einzigen Prozess zu machen.