• Non ci sono risultati.

FIFO (named pipe)

N/A
N/A
Protected

Academic year: 2021

Condividi "FIFO (named pipe)"

Copied!
1
0
0

Testo completo

(1)

FIFO (named pipe)

Le FIFO sono delle pipe con un nome associato (un nome di file nel file system).

Una FIFO può essere creata da terminale con il comando mkfifo e cancellata con il comando rm.

$ mkfifo tubo

$ ls –l tubo

prw-rw-r-- 1 valeria valeria 0 Mar 24 13:40 tubo

$ rm tubo

− Una FIFO è quindi un file speciale che esiste nel file system ed è riconoscibile dal marcatore p nell’output del comando ls –l.

− Le FIFO sono persistenti, devono quindi essere rimosse esplicitamente.

− Poiché hanno un nome potranno essere utilizzate per la comunicazione tra processi che NON sono in correlazione gerarchica (padre/figlio).

− Sulle FIFO si effettuano le stesse operazioni di un file ad accesso sequenziale (apertura, lettura/scrittura, chiusura) MA i dati letti vengono rimossi

Nei programmi C la creazione di una FIFO può avvenire utilizzando la funzione mkfifo() che crea una nuova FIFO oppure restituisce un errore se la FIFO esiste già. Una FIFO può essere eliminata utilizzando la funzione unlink.

L’accesso alla FIFO avverrà dopo la sua apertura che può essere fatta con la fopen, specificandone il nome e se il programma vorrà leggere o scrivere sulla FIFO, al termine si userà la fclose per la chiusura della FIFO. Le operazioni di lettura /scrittura potranno essere fatte usando le funzioni C di I/O.

Di default l’ apertura di una FIFO è bloccante: un processo che tenta di aprirla in lettura (o scrittura) viene bloccato fino a quando un altro processo non la apre in scrittura (o lettura).

Ogni FIFO deve avere sia un lettore che uno scrittore: se un processo tenta di scrivere su una FIFO che non ha un lettore esso riceve il segnale SIGPIPE da parte del kernel.

Vedere gli esempi fifo-write.c e fifo-read.c

Riferimenti

Documenti correlati

The most simple use case for FIFOs is synchronization between 2 processes: 1 reading from + 1 writing to the FIFO. FIFOs have an unusual open semantics built

Écrivez un programme occurrences qui prend en paramètre une expression régulière r et n noms de fichiers puis qui affiche le nombre total d’occurrences de r dans les n fichiers

ñ usually: read could block waiting for data, open could not a process opening a FIFO for writing (O_WRONLY) will block. until another process opens the FIFO for the

Le prestazioni della tabella hash con bucket non sono più, ovviamente, O(1) per tutte le operazioni. Le prestazioni dipendono fortemente dalle caratteristiche della funzione

– la catena non è un ADT perché nella sua definizione abbiamo esplicitamente indicato COME la struttura dati deve essere realizzata, e non semplicemente il suo comportamento.

Il pizzaiolo lavora costantemente alla produzione delle pizze e può evadere un solo ordine alla volta.. Per semplicità, ai fini della soluzione, si considerino il numero ed il tipo

Il programma dovrà creare due figli, il primo legge ciclicamente da tastiera delle frasi e le scrive sulla prima FIFO, il secondo legge ciclicamente dalla seconda FIFO e

Í read blocca il processo lettore se la pipe è vuota (cioè sospende il processo lettore in attesa di dati) Í write blocca il processo scrittore se non c’è spazio. dentro la pipe