Le pipe sono dei buffer di memoria in cui vai a condividere dei dati. Quindi ad esempio un programma scrive in uno spazio di memoria condivisa ed un'altro va a leggere. Le usi principalmente nella programmazione concorrente. Le socket invece servono per scambiare dati tra macchine remote (o all'interno della stessa macchina con l'indirizzo 127.0.0.1). Le socket ad esempio vengono usate per i programmi che girano in rete.
Ciao