mkfifo Alternative

J’ai un processus qui doit continuellement écrire des informations. De plus, il existe un second processus qui se connecte parfois au “canal d’information” du processus d’écriture et devrait lire les informations écrites depuis sa connexion. Ce processus peut également se déconnecter et se reconnecter plusieurs fois.

Je le réalise actuellement avec un tube nommé, en utilisant mkfifo () dans mon programme c ++. Malheureusement, si j’appelle open () sur ce fifo, cela bloque jusqu’à ce qu’un processus ouvre le fifo pour la lecture. C’est assez normal pour les canaux nommés, mais j’ai besoin de cette commande ouverte pour ne pas bloquer.

Connaissez-vous une alternative à mkfifo dans ce cas?

Heinrich

Vous pouvez utiliser des sockets de domaine Unix ou des sockets TCP classiques sur l’interface de bouclage.

Vous pouvez utiliser la mémoire partagée ou mmap. Il devrait contenir le décalage aux données les plus anciennes et le bloc de mémoire pour les données

fifo est limité à 64k (dépend de la dissortingbution et de certains parameters).

J’ai finalement utilisé la queue des messages Unix, Reader et Writer peuvent être lancés en toute indépendance et tout peut être effectué non bloquant