• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Chelica

array

3 mensagens neste tópico

// soma de 2arrays
int soma(int *v1,int *v2 ){

int i;

for(i=0;i<4;i++) {
	pid_t pid=fork();
	if(pid<0) perror("Fork error!");
	if(pid==0) {
		printf("Processo filho!\n");
		aux(v1,v2,vr,(i*5),((i*5)+5));
		exit(1);
	}
}

int st;
for(i=0;i<4;i++){
	if (wait(&st)==-1) perror("Wait error!");
}

//if(i==4){

printf("\nsoma dos arrays!\n");
for(i=0;i<20;i++)
	printf("%d ",vr[i]); // 1.
//}
return 0;

}


void aux(int v1[],int v2[],int vr[],int i,int f){
int x;
for(x=i;x<f;x++) {
	vr[x ]  = v1[x ] + v2[x ];
	printf("%d ",vr[x ]); // 2.
}
}

O array n está a ser correctamente imprimido... (1!=2) Mas kd trabalhamos c arrays trabalha.se com endereços...:/ n deveria o vr ser alterado? :/ ou tou a baralhar td?!:S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Axo k ja sei o pkê..O filho é uma cópia fiel do pai ficando com uma cópia do segmento de

dados, heap e stack;Ou seja akele vr a k filho tem acesso é apenas 1 copia!:/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Axo k ja sei o porqueê..O filho é uma cópia fiel do pai ficando com uma cópia do segmento de

dados, heap e stack;Ou seja akele vr a k filho tem acesso é apenas 1 copia!:/

Sim quando usas o fork todo o processo é copiado. Já se usasses threads, apenas os dados locais ao código que irias executar é que seriam replicados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora