Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <stdbool.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdarg.h>
- #include <errno.h>
- #define PIPE_IN "calcPipeIn"
- #define PIPE_OUT "calcPipeOut"
- int main(){
- int fdin, fdout, bytesread, contatore;
- char leggi;
- char numero[5];
- char temp[3];
- /* APRO LE PIPE */
- printf("creo pipe se non esistono\n");
- mkfifo(PIPE_IN,0666); // crea la pipe con nome
- mkfifo(PIPE_OUT,0666); // crea la pipe con nome
- printf("apro pipe in lettura\n");
- if ( (fdin = open (PIPE_IN,O_RDONLY)) < 0 ) { // apre la pipe in lettura
- perror("errore apertura pipe");
- exit(1);
- }
- printf("apro pipe in scrittura\n");
- if ( (fdout = open (PIPE_OUT,O_WRONLY)) < 0 ) { // apre la pipe in lettura
- perror("errore apertura pipe");
- exit(1);
- }
- printf("inizio a leggere!\n\n");
- contatore=0;
- strcpy(numero,"");//creiamo stringa vuota dove scriviamo il numero da sommare;
- //leggere dalla pipe 4+4+5#
- while (read(fdin,&leggi,1)) { // legge un carattere alla volta fino a EOF
- if(leggi=='+'){
- //converto la stringa in numero e la sommo
- contatore+=atoi(numero);
- strcpy(numero,"");
- }
- else if(leggi=='#'){
- contatore+=atoi(numero);
- strcpy(numero,"");
- //stampo contatore
- printf("Somma uguale a %d.\n",contatore);
- //creo stringa di risultato da scrivere su pipe
- sprintf(temp,"%d#",contatore);
- //scrivo su pipe
- if(!write (fdout,temp,strlen(temp)))perror("Errore in scrittura su pipe!");
- printf("--->##@@@ ho scritto sulla pipe %s\n",temp);
- //azzero il contatore per la prossima somma.
- contatore=0;
- }
- else{
- //convertiamo leggi (char) in char[].
- sprintf(temp,"%c",leggi);
- strcat(numero,temp); }
- //printf("%c",leggi);
- //flush del buffer in lettura.
- fflush(stdout);
- }
- ///codice morto!
- /* CHIUDO LE PIPE */
- unlink(PIPE_IN); // rimuove la pipe
- unlink(PIPE_OUT); // rimuove la pipe
- exit(1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement