Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
BOOX Go 6 Gen II porta per la prima volta il supporto allo stilo su un e-reader da 6 pollici, affiancando 3 GB di RAM al collaudato Snapdragon 665 e un design rivisto con scocca posteriore a costolature. Su carta la proposta è interessante, ma Android 11 fuori supporto, l'assenza di un alloggiamento per il pennino e un'autonomia ridotta rispetto agli e-reader tradizionali sono i compromessi da accettare
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Lenovo Idea Tab Plus prova a portare un display da 12,1 pollici 2.5K, quattro speaker Dolby Atmos e una batteria da 10.200 mAh sotto la soglia psicologica dei 300 euro, penna inclusa. Lo abbiamo usato per oltre una settimana per capire dove l'azienda ha tagliato e dove invece ha tenuto il punto
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
L'euro digitale è una valuta fiat che entrerà in vigore nei prossimi anni. L'obiettivo principale è quello di ridurre la dipendenza dalle piattaforme di pagamento digitali statunitensi e offrire ai cittadini un modo semplice per trasferire denaro. Anche offline, anche in maniera (pseudo)anonima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-11-2007, 08:52   #1
maradona86
Member
 
Iscritto dal: Jan 2007
Messaggi: 39
[c]non mi vengono gli es qualcuno mi da una mano please??

Quote:
#include <stdio.h>



main()
{int fdes1[2];int fdes2[2];
int pid;
int i=1;
int j=1;
char buffer1[5];
char buffer2[6];
pipe(fdes1); /*creating first pipe*/
pipe(fdes2); /* second pipe */

pid = fork();

if (pid==0){ /*child */
close(fdes1[1]);
close(fdes2[0]);

while(i!=0){
i=read(fdes1[0], buffer1,5);
printf("%d characters received by child= ",i);
buffer1[i]='\0';
printf("%s\n",buffer1);
}
close(fdes1[0]);

sleep(1);

write(fdes2[1],"Ciao, Papa!",sizeof("Ciao, Papa!"));





}

if (pid!=0) { /* in parent */
close(fdes1[0]);
close(fdes2[1]);
write(fdes1[1],"Ciao, Bambino!",sizeof("Ciao, Bambino!"));
close(fdes1[1]);


while(j!=0){
j=read(fdes2[0], buffer2,6);
printf("%d characters received by father= ",j);
buffer2[j]='\0';
printf("%s\n",buffer2);
}



}
}
questo è il mio codice che avevo implementato a lezione..come potrei fare a creare 3 processi figli P1,P2,P3 e pipes tra processi in modo che P1 scrive un messaggio a P2 che lo passa a P3 che lo ripassa a P1 e cosi via e Ogni volta che P1 riceve il messaggio lo cambia ??
maradona86 è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2007, 09:40   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Vedo che non ti sei impegnato molto con l'indentazione
Indentalo ed avrai più risposte...compresa la mia
Inseriscilo nel tag {CODE}{/CODE} con le parente quadre al posto delle graffe.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2007, 17:59   #3
maradona86
Member
 
Iscritto dal: Jan 2007
Messaggi: 39
Codice:
#include <stdio.h>



main()
{int fdes1[2];int fdes2[2];
int pid;
int i=1;
int j=1;
char buffer1[5];
char buffer2[6];
pipe(fdes1); /*creating first pipe*/
pipe(fdes2); /* second pipe */

pid = fork();

if (pid==0){ /*child */
close(fdes1[1]);
close(fdes2[0]);

while(i!=0){
i=read(fdes1[0], buffer1,5);
printf("%d characters received by child= ",i);
buffer1[i]='\0';
printf("%s\n",buffer1);
}
close(fdes1[0]);

sleep(1);

write(fdes2[1],"Ciao, Papa!",sizeof("Ciao, Papa!"));





}

if (pid!=0) { /* in parent */
close(fdes1[0]);
close(fdes2[1]);
write(fdes1[1],"Ciao, Bambino!",sizeof("Ciao, Bambino!"));
close(fdes1[1]);


while(j!=0){
j=read(fdes2[0], buffer2,6);
printf("%d characters received by father= ",j);
buffer2[j]='\0';
printf("%s\n",buffer2);
}



}
}
ok so che facendo il fork creo processi identici ma non so bene come farlo...
scusate per prima
ciauz a tutti buona serata
maradona86 è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2007, 19:15   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Questa è una indentazione

Codice:
#include <stdio.h>



main()
{
    int             fdes1[2];
    int             fdes2[2];
    int             pid;
    int             i = 1;
    int             j = 1;
    char            buffer1[5];
    char            buffer2[6];
    pipe(fdes1);		/* creating first pipe */
    pipe(fdes2);		/* second pipe */

    pid = fork();

    if (pid == 0) {		/* child */
	close(fdes1[1]);
	close(fdes2[0]);

	while (i != 0) {
	    i = read(fdes1[0], buffer1, 5);
	    printf("%d characters received by child= ", i);
	    buffer1[i] = '\0';
	    printf("%s\n", buffer1);
	}
	close(fdes1[0]);

	sleep(1);

	write(fdes2[1], "Ciao, Papa!", sizeof("Ciao, Papa!"));





    }

    if (pid != 0) {		/* in parent */
	close(fdes1[0]);
	close(fdes2[1]);
	write(fdes1[1], "Ciao, Bambino!", sizeof("Ciao, Bambino!"));
	close(fdes1[1]);


	while (j != 0) {
	    j = read(fdes2[0], buffer2, 6);
	    printf("%d characters received by father= ", j);
	    buffer2[j] = '\0';
	    printf("%s\n", buffer2);
	}



    }
}
Prima di tutto devi fare due firk se devi operare con 3 processi.
Il processo A deve condividere con il processo B una pipe.
Il processo B deve condividere con il processo C una pipe.
Quindi: A crea una pipe e fa la fork creando B. A chiude la pipe in ricezione, B quella in invio.
B crea una pipe e fa la fork creando C. C chiude la pipe in ricezione con A (resta aperta anche quella) e la pipe in invio verso B. B chiude quella in ricezione verso C.

A questo punto B non deve fare altro che inviare ogni carattere che riceve da A sulla pipe verso C.
A scrive sulla pipe e C legge.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2007, 14:23   #5
maradona86
Member
 
Iscritto dal: Jan 2007
Messaggi: 39
Codice:
#include <stdio.h>



 main()

{

int fdes [2]; 			                    // prima pipe

int fdes2[2];			                  // seconda pipe

int fdes3[2]; 			                 // terza pipe

int pid;  			                   // usato per fare fork

int pid2; 			                  // usato per fare fork

int pid3;  			                 // usato per fare fork

char buffer1[5]; 		             // buffer tra processi

char buffer2[6];		             // buffer tra processi

char buffer3[7];  		             // buffer tra processi

pipe(fdes); 			               // creazione prima pipe

pipe(fdes2);   		                      // creazione seconda pipe

pipe(fdes3); 			              // creazione terza pipe

char *messaggio = "sis"  	        // messaggio da inviare tra processi 
 
char singolo; 			           // singolo carattere

i = 0;

pid=fork(); 			          // processo A

if(pid != 0) 			          // sono nel padre

{ 

wait(); 			        // aspetto che A finisce
     
close(fdes[1]); 		    // chiudo in scrittura la prima pipe
     
for (i=0;singolo!='\0';i++)
  
{

singolo=read(fdes[0],1,sizeof(char)); 
 
buffer1[i]=singolo;     
 
}
     
open(fdes[1]); 			      // apro in scrittura fdes

pid2=fork(); 			       // genero il processo B

if(pid2 != 0)			       //  sono ancora nel padre
     
{ 

wait(); 			      // aspetto che B finisce
        
close(fdes2[1]); 		 // chiudo in scrittura fdes2

for(i=0;singolo!='\0';i++)
        
{

singolo=read(fdes2[0],1,sizeof(char)); 

buffer2[i]=singolo;     
     
}
 
open(fdes2[1]);                                   // riapro in scrittura BC
        
pid3=fork();                                        // genero il processo C
	
if(pid3 != 0)                                       // sono ancora nel padre
	 
{

wait();                                            // aspetto che il processo C finisca

close (fdes3[1]);                              // chiudo in scrittura CA
	  
for(i=0;singolo!='\0';i++)
           
{

singolo=read(fdes3[0],1,sizeof(char)); 
            
buffer3[i]=singolo;     
        
}
 
open(fdes3[1]);                               // riapro in scrittura CA

*messaggio=*messaggio+1;             // cambio il messaggio da spedire	  	

	 }

else                                         // sono nel processo C ora devo scrivere      
                                              //   nella pipeCA
 
{ 

write(fdes3[1],buffer3,sizeof(buffer3));	  

         }

      }

else                                      // sono nel processo B ora devo scrivere 
                                          // nella pipeBC

{ 

write(fdes2[1],buffer2,sizeof(buffer2));	  

      }
     
     
   }
  
else                                   //mi trovo nel processo A ora devo scrivere 
                                        //nella pipeAB

{

write(fdes[1],messaggio,sizeof(messaggio));	  

   }

}

mi scuso per l indentazione.
non riesco ancora a farlo funzionare.
dove sbaglio??
maradona86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2007, 14:32   #6
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Uh? Eh? Cosa?
Codice:
for (i=0;singolo!='\0';i++)
{
  singolo=read(fdes[0],1,sizeof(char));
  buffer1[i]=singolo;
}
Dove punta 1? Cosa stai scrivendo in buffer1[i]?
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2007, 14:51   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Se non sbaglio, visto che è un po' che non tocco le pipe...non le devi riaprire le pipe. Una volta creata è già aperta, devi solo chiudere quelle che non usi. Poi tra l'altro mancherebbero anche dei parametri alla open.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Samsung integra l'IA on device con Gemin...
L'IA ammazza le vendite dei mainframe, m...
Ritorno al vintage con Kodak EC35: la nu...
StoryKit, l'app di Meta che genera fiabe...
Allarme SharePoint: una falla critica es...
HMD potrebbe riportare in vita i Lumia c...
Preordine Samsung Galaxy Watch 9, tutti ...
Framework, il nuovo desktop è pot...
STMicroelectronics vola sull'intelligenz...
Recensione Assassin's Creed Black Flag R...
Amazon Haul lancia la promo sui bestsell...
"Claudefishing": Substack d&ag...
Tesla, il secondo trimestre ha un fattur...
Google stampa denaro: gli utili quadrupl...
Governance dell'IA, da adempimento a lev...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v