Portál AbcLinuxu, 11. května 2025 10:29
#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.