Portál AbcLinuxu, 7. listopadu 2025 18:50
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
int roura[2];
pipe(roura);
int pid=fork();
if(pid != 0) { // rodic
close(roura[0]);
int a = 10;
write(roura[1],&a,sizeof(a));
// close(roura[1]);
printf("PID rodice: %d\n", getpid());
printf("Potomek: %d\n", pid);
int pid1=fork();
if (pid1 == 0) {
int b = 312;
write(roura[1],&b,sizeof(b));
close(roura[1]);
printf("Potomek2-PID rodice: %d\n", getpid());
printf("Potomek2-Potomek: %d\n", pid);
}
} else { // potomek
close(roura[1]);
int a1, b1;
read(roura[0],&a1,sizeof(a1));
read(roura[0],&b1,sizeof(b1));
close(roura[1]);
printf("PID potomka: %d\n", getpid());
printf("Potomek: %d\n", pid);
printf("Soucet císel z roury je %d\n", a1 + b1);
}
return 0;
}
Roury mi fungují, ale nějak mi nesouhlasí PIDY:
PID rodice: 11731 Potomek: 11732 Potomek2-PID rodice: 11733 Potomek2-Potomek: 11732 PID potomka: 11732 Potomek: 0 Soucet císel z roury je 322To vypadá jako by měl jeden potomek více rodičů?! Jak to má být správně?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.