Fork & Pipe in C

La comunicazione tra processi mediante le Pipe in memoria dopo una Fork permette di mostrare le potenzialità di programmi basati su più processi: in un sistema Unix-based la chiamata della funzione “fork()” della libreria “unistd.h” permette a un processo di generare copie di se stesso dal punto della chiamata in poi e quindi sia il genitore (processo generante o padre) che i suo figli (processi generati) condivideranno le copie di tutte le variabili già create in precedenza, comprese le eventuali Pipe preventivamente create nel padre per farlo comunicare con i suoi futuri figli.

Dunque la Fork, consentendo di creare più flussi di esecuzione indipendenti di uno stesso programma, permette di realizzare un paradigma di programmazione Master-Slave utile nel caso di operazioni instabili/rischiose in quanto se tali operazioni venissero eseguite da un processo Slave e ne causassero una terminazione inaspettata, il suo processo Master che lo sta monitorando sarebbe in grado di rimetterlo in piedi automaticamente!

I programmi basati su queste System Call sono per l’appunto dipendenti dal Sistema Operativo che implementa tali Chiamate e pertanto non completamente portabili. In futuro vedremo applicazioni Client/Server basate sulla tecnologia software dei Thread (invece dei processi copia) e sulla tecnologia Internet del protocollo TCP/IP (invece delle Pipe) per far comunicare più flussi di esecuzione indipendenti standardizzando di fatto la trasmissione dei dati a prescindere dal Sistema Operativo adoperato.