Ir para o conteúdo
Chelica

array

Mensagens Recomendadas

Chelica    0
Chelica

// 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Chelica    0
Chelica

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!:/

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade