Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Cos'e' una pipe ???

    - Cos'e' una Pipe ???
    - Quando viene Usata ???
    - Come Funziona ???
    - Come si Crea ???
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  2. #2

    Re: [C] Cos'e' una pipe ???

    - Cos'e' una Pipe ???
    Reindirizza l'uotput di un programma sull'input di un altro
    - Quando viene Usata ???
    In linux , ad es, per cercare fai:
    ls -l / | grep cd
    - Come Funziona ???
    Nell'esempio sopra l'output di ls viene passato a grep che si occupa di cercarci dentro
    - Come si Crea ???
    Dovresti guardarti sul manuale del GCC, sempre che tu programmi su linux


    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  3. #3
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520

    PIPE

    Cos'e' una Pipe ???
    E' un metodo per far comunicare dei processi che girano sulla stessa macchina (reindirizzamento I/O e' un esempio di utilizzo). In pratica e' un buffer comune a piu' processi

    - Quando viene Usata ???
    quando (appunto) due processi sulla stessa macchina devono comunicare

    - Come Funziona ???
    in c e' molto simile alla gestione dei file, in pratica infatti vengono usate chiamate di sistema al filesystem per creare il buffer e per gestire la comunicazione


    - Come si Crea ???
    FILE *popen(char *command, char *type) - apre una pipe per I/O dove
    "command" e' il processo che deve essere connesso al processo chiamante, creando cosi' la pipe. Il "type" puo' essere sia "r" per reading (lettura) che "w" per writing (scrittura).
    Il return di popen() e' un puntatore ad una stream oppure NULL per un qualsiasi errore.
    Una pipe aperta con popen() deve sempre essere chiusa con
    pclose(FILE *stream)
    E' possibile comunicare con la "stream" della pipe tramite fprintf() ed fscanf().

    int pipe(int fd[2]) - crea una pipe e ritorna due file descrittori, fd[0]
    e fd[1]. fd[0] e' aperto per la lettura, fd[1] per la scrittura.
    pipe() ritorna 0 in caso di successo, -1 in caso di fallimento e di conseguenza setta errno.
    Il modello standard di programmazione prevede che, dopo la creazione della pipe, due o piu' processi che cooperano verranno creati da una fork ed i
    dati verranno passati mediante l'utilizzo di read() e write().
    Le pipe aperte con pipe() dovranno essere chiuse con "close (int fd)".

    Esempio: il processo padre invia delle write al processo figlio

    int pdes[2];

    pipe(pdes);
    if (fork == 0)
    { /* processo figlio */
    close(pdes[1]); /* non richiesto */
    read(pdes[0]); /* legge dal processo padre */
    ...
    }
    else
    { close(pdes[0]); /* non richiesto */
    write(pdes[1]); /* scrive al processo figlio */
    ...
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.