Domanda

Qual è la differenza tra socket di dominio IPC e Unix e named pipe?

Ho ottenuto vaghe definizioni da vari libri, ma non ho potuto avere chiarezza su quale dovrebbe essere usato dove.

È stato utile?

Soluzione

Quasi tutti i modi in cui due processi di comunicazione tra loro potrebbero essere considerati una forma di IPC.

Ad esempio:

  1. Pipes senza nome (cat file.txt | grep foo) o Pipes con nome
  2. Socket di dominio Unix
  3. socket TCP o UDP
  4. Netlink Socket su Linux
  5. Vari meccanismi di memoria condivisa come i file con mappatura della memoria
  6. Passaggio di messaggi ad alta velocità come ZeroMQ

Altri suggerimenti

Come affermato da qrdl, i socket di dominio UNIX e le named pipe sono entrambi meccanismi IPC.

Di questi due, le pipe con nome sono più semplici da utilizzare, ma molto meno flessibili dei socket di dominio UNIX. Ad esempio, se si prevede potenzialmente più di un processo di lettura per ciascun processo di scrittura, i socket del dominio UNIX sono indispensabili; se ti aspetti che il processo di lettura si interrompa e si avvii durante l'esecuzione del processo di scrittura, allora avrai bisogno di socket di dominio UNIX.

IPC sta per Comunicazioni tra processi . I socket di dominio UNIX e le named pipe sono solo due meccanismi IPC, descritti in Wikipedia:

Grazie per esserti concentrato sulla domanda, alcune funzionalità aggiornate:

Nei socket di dominio, la comunicazione effettiva (lo scambio di dati) non utilizza il file system, ma i buffer nella memoria del kernel. Per impostazione predefinita, è la modalità full duplex.

Le pipe nominate sono identificate dal loro punto di accesso, un file conservato nel file system per la gestione dei dati. Una pipe denominata di default supporta le operazioni di lettura e scrittura bloccate. Tuttavia, è possibile fare in modo che le named pipe supportino le operazioni non bloccanti specificando il flag O_NONBLOCK durante l'apertura. Una pipe denominata deve essere aperta in sola lettura o sola scrittura. Non deve essere aperto in lettura-scrittura perché è half-duplex, un canale unidirezionale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top