Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-11-2007, 09: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, 10: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, 18: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, 20: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, 15: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, 15: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, 15: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


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
Warhorse Studios colpita da un grave att...
MX Master 4, arriva l'edizione speciale ...
Kali Linux 2026.3 porta la caccia alle r...
Oracle si affida a OpenAI: ChatGPT e Cod...
Kaspersky punta su IA e servizi gestiti ...
Già sfruttata la falla Brotli che...
Potrebbe essere stato scoperto un nuovo ...
Claude Code, il prompt per scovare telec...
Palit e GALAX smentiscono le voci sulla ...
Fujifilm annuncia la Instax Mini Evo 2, ...
Tailscale chiude le falle SSH verso root...
Il tuo Galaxy laggava nei giochi? Samsun...
Arrivano i nuovi Amazon Echo: prezzi da ...
Il nuovo pickup elettrico Ford può alime...
Opera WebAI: così l'intelligenza artific...
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: 19:06.


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