/*
Szekely Anna
saim1677
514-es csoport
L9 (FORK) 8as feladat
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int T[20];
int pfd1[2],pfd2[2],pfd3[2];
void osszead(int el, int ve){
if(ve-el==0){
close(pfd3[0]);
write(pfd3[1],&T[el],sizeof(int));
printf("%d azonositoju gyerek be pipe-ba irta a %d erteket\n",getpid
(),T
[el
]); //exit(0);
}
else{
switch(fork()){
case -1:{
}
case 0:{//gyerek1
int e,v;
read(pfd1[0],&e,sizeof(int));
read(pfd1[0],&v,sizeof(int));
printf("%d azonositoju gyerek beolvasta a %d es %d ertekeket\n",getpid
(),e
,v
); osszead(e,v);
}
default:{
switch(fork()){
case -1:{
}
case 0:{//gyerek2
int e,v;
read(pfd2[0],&e,sizeof(int));
read(pfd2[0],&v,sizeof(int));
printf("%d azonositoju gyerek beolvasta a %d es %d ertekeket\n",getpid
(),e
,v
); osszead(e,v);
}
default:{}
}
}
}
int k=(el+ve)/2;//berakom az elso ket indexhatart
write(pfd1[1],&el,sizeof(int));
write(pfd1[1],&k,sizeof(int));
k++;
write(pfd2[1],&k,sizeof(int));//masodik ket indexhatar
write(pfd2[1],&ve,sizeof(int));
wait(NULL);
wait(NULL);
int o1,o2;
read(pfd3[0],&o1,sizeof(int));
read(pfd3[0],&o2,sizeof(int));
int ossz=o1+o2;
printf("%d azonositoju gyerek kiolvasta a %d es %d ertekeket, beirta a %d erteket\n",getpid
(),o1
,o2
,ossz
); write(pfd3[1],&ossz,sizeof(int));
//}
}
}
int main(void){
FILE
*f
=fopen("input.dat","r"); int n,i,osszeg;
for (i=0;i<n;i++){
}
if (pipe(pfd1)<0){
} //-ez vegzi a baloldali reszek osszeadasat
if (pipe(pfd2)<0){
} //-ez vegzi a jobboldali reszek osszeadasat
if (pipe(pfd3)<0){
} //eredmeny
osszead(0,n-1);
int vegosszeg;
wait(NULL);
read(pfd3[0],&vegosszeg,sizeof(int));
printf("a vegosszeg %d\n",vegosszeg
); }
LyoKU3pla2VseSBBbm5hCnNhaW0xNjc3CjUxNC1lcyBjc29wb3J0Ckw5IChGT1JLKSA4YXMgZmVsYWRhdAoqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvd2FpdC5oPgppbnQgVFsyMF07CmludCBwZmQxWzJdLHBmZDJbMl0scGZkM1syXTsKCnZvaWQgb3NzemVhZChpbnQgZWwsIGludCB2ZSl7CgkgaWYodmUtZWw9PTApewoJCWNsb3NlKHBmZDNbMF0pOwoJCXdyaXRlKHBmZDNbMV0sJlRbZWxdLHNpemVvZihpbnQpKTsKCQlwcmludGYoIiVkIGF6b25vc2l0b2p1IGd5ZXJlayBiZSBwaXBlLWJhIGlydGEgYSAlZCBlcnRla2V0XG4iLGdldHBpZCgpLFRbZWxdKTsKCQkvL2V4aXQoMCk7Cgl9CgllbHNlewoJc3dpdGNoKGZvcmsoKSl7IAoJCWNhc2UgLTE6ewoJCQlwZXJyb3IoImZvcmsgaGliYToiKTsKCQkJZXhpdCgxKTsKCQl9CgkJY2FzZSAwOnsvL2d5ZXJlazEKCQkJaW50IGUsdjsKCQkJcmVhZChwZmQxWzBdLCZlLHNpemVvZihpbnQpKTsKCQkJcmVhZChwZmQxWzBdLCZ2LHNpemVvZihpbnQpKTsKCQkJcHJpbnRmKCIlZCBhem9ub3NpdG9qdSBneWVyZWsgYmVvbHZhc3RhIGEgJWQgZXMgJWQgZXJ0ZWtla2V0XG4iLGdldHBpZCgpLGUsdik7CgkJCW9zc3plYWQoZSx2KTsKCQkJZXhpdCgwKTsKCQkJCQoJCX0KCQlkZWZhdWx0OnsKCQkJc3dpdGNoKGZvcmsoKSl7CgkJCQljYXNlIC0xOnsKCQkJCQlwZXJyb3IoImZvcmsgaGliYToiKTsKCQkJCQlleGl0KDEpOwoJCQkJfQkKCQkJCWNhc2UgMDp7Ly9neWVyZWsyCgkJCQkJCWludCBlLHY7CgkJCQkJCXJlYWQocGZkMlswXSwmZSxzaXplb2YoaW50KSk7CgkJCQkJCXJlYWQocGZkMlswXSwmdixzaXplb2YoaW50KSk7CgkJCQkJCXByaW50ZigiJWQgYXpvbm9zaXRvanUgZ3llcmVrIGJlb2x2YXN0YSBhICVkIGVzICVkIGVydGVrZWtldFxuIixnZXRwaWQoKSxlLHYpOwoJCQkJCQlvc3N6ZWFkKGUsdik7CgkJCQkJCWV4aXQoMCk7CgkJCQl9CgkJCQlkZWZhdWx0Ont9CgoJCQl9CgkJfQoJfQoKCQoJaW50IGs9KGVsK3ZlKS8yOy8vYmVyYWtvbSBheiBlbHNvIGtldCBpbmRleGhhdGFydAoJd3JpdGUocGZkMVsxXSwmZWwsc2l6ZW9mKGludCkpOwoJd3JpdGUocGZkMVsxXSwmayxzaXplb2YoaW50KSk7CglrKys7Cgl3cml0ZShwZmQyWzFdLCZrLHNpemVvZihpbnQpKTsvL21hc29kaWsga2V0IGluZGV4aGF0YXIKCXdyaXRlKHBmZDJbMV0sJnZlLHNpemVvZihpbnQpKTsKCXdhaXQoTlVMTCk7Cgl3YWl0KE5VTEwpOwoJaW50IG8xLG8yOwoJcmVhZChwZmQzWzBdLCZvMSxzaXplb2YoaW50KSk7CglyZWFkKHBmZDNbMF0sJm8yLHNpemVvZihpbnQpKTsKCWludCBvc3N6PW8xK28yOwoJcHJpbnRmKCIlZCBhem9ub3NpdG9qdSBneWVyZWsga2lvbHZhc3RhIGEgJWQgZXMgJWQgZXJ0ZWtla2V0LCBiZWlydGEgYSAlZCBlcnRla2V0XG4iLGdldHBpZCgpLG8xLG8yLG9zc3opOwoJd3JpdGUocGZkM1sxXSwmb3NzeixzaXplb2YoaW50KSk7Ci8vfQoJfQp9CgppbnQgbWFpbih2b2lkKXsKCglGSUxFICpmPWZvcGVuKCJpbnB1dC5kYXQiLCJyIik7CglpbnQgbixpLG9zc3plZzsKCWZzY2FuZihmLCIlZCIsJm4pOwoJZm9yIChpPTA7aTxuO2krKyl7CgkJZnNjYW5mKGYsIiVkIiwmVFtpXSk7Cgl9CglmY2xvc2UoZik7CgkKCWlmIChwaXBlKHBmZDEpPDApewoJCXBlcnJvcigicGlwZSBoaWJhLCBwZmQxIik7CgkJZXhpdCgtMSk7Cgl9IC8vLWV6IHZlZ3ppIGEgYmFsb2xkYWxpIHJlc3playBvc3N6ZWFkYXNhdAoJaWYgKHBpcGUocGZkMik8MCl7CgkJcGVycm9yKCJwaXBlIGhpYmEsIHBmZDEiKTsKCQlleGl0KC0xKTsKCX0gLy8tZXogdmVnemkgYSBqb2Jib2xkYWxpIHJlc3playBvc3N6ZWFkYXNhdAoJaWYgKHBpcGUocGZkMyk8MCl7CgkJcGVycm9yKCJwaXBlIGhpYmEsIHBmZDEiKTsKCQlleGl0KC0xKTsKCX0gLy9lcmVkbWVueQoJb3NzemVhZCgwLG4tMSk7CglpbnQgdmVnb3NzemVnOwoJd2FpdChOVUxMKTsKCXJlYWQocGZkM1swXSwmdmVnb3NzemVnLHNpemVvZihpbnQpKTsKCXByaW50ZigiYSB2ZWdvc3N6ZWcgJWRcbiIsdmVnb3NzemVnKTsKCWV4aXQoMCk7Cn0K