Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC
Abbiamo provato la Gigabyte Radeon RX 9070 GRE Gaming OC, nuova proposta RDNA 4 che si inserisce tra GeForce RTX 5060 Ti e RTX 5070. Prestazioni solide in rasterizzazione e ray tracing, frequenze elevate grazie all'overclock di fabbrica e raffreddamento efficace: ecco come si comporta nei nostri test.
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


Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Recensione Vivo X300 Ultra: fotocamera eccezionale, ma prezzo proibitivo Recensione Vivo X300 Ultra: fotocamera ecceziona...
Addio compromessi? I nuovi tablet rugged...
Cooler Master al Computex 2026: case sil...
G.Skill mostra AMD EXPO ULL al Computex:...
Hilti e i data center, l'ingegneria dell...
Narwal anticipa il Prime Day: sconti fin...
Sharkoon mantiene il rapporto qualit&agr...
Xference e Aruba insieme per l'IA privat...
Google Wallet, in arrivo i documenti d'i...
Recensione OPPO Enco Clip2: tanta tecnol...
Altro passo dei cinesi in Europa: Chery ...
AMD FSR 4.1: l'architettura RDNA 3.5 pot...
L'Economist dice di non dare la colpa al...
Meta frena sul tracciamento dei dipenden...
Falla zero-click su Android, anche Linux...
AMD ha nascosto il vero segreto di EXPO ...
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: 18:50.


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