Zadania do laboratorium 6 SOP
✅ Zadanie 1 – Trzy procesy potomne
Napisz program, który:
- Tworzy trzy procesy potomne (
fork()
). - Każdy proces potomny powinien:
- wypisać swój
PID
iPPID
, - zakończyć działanie kodem
exit(i)
(gdziei
to numer procesu).
- wypisać swój
- Proces rodzica powinien:
- poczekać na każdego potomka osobno (
waitpid()
), - wypisać informacje o zakończeniu dzieci:
PID
+ kod wyjścia (WEXITSTATUS()
).
- poczekać na każdego potomka osobno (
✅ Zadanie 2 – fork()
i identyfikacja procesu
Napisz program, który:
- Tworzy jeden proces potomny.
- Dziecko:
- wypisuje swój
PID
iPPID
, - śpi 2 sekundy,
- sprawdza ponownie
PPID
(czy zmienił się na 1), - kończy działanie.
- wypisuje swój
- Rodzic kończy się od razu, bez
wait()
. ❓Czy rodzic się zmienia? Jeśli tak, to kto jest nowym rodzicem?
✅ Zadanie 3 – Dwa procesy potomne z kolejnością
Napisz program, który:
- Tworzy dwa procesy potomne.
- Proces 1:
- wypisuje “Jestem procesem 1”,
- kończy się po 1 sekundzie.
- Proces 2:
- czeka 2 sekundy,
- wypisuje “Jestem procesem 2”,
- kończy się.
Rodzic powinien użyć waitpid()
i wypisać, który proces zakończył się jako pierwszy i drugi.
🎯 Możesz dodać timestamp (time()
lub gettimeofday()
), by precyzyjnie zmierzyć czas zakończenia.
✅ Zadanie 4 – Dziecko czeka na inny proces
Napisz program, który:
- Tworzy dziecko.
- Dziecko tworzy swoje dziecko (czyli wnuka).
- Proces wnuka:
- wypisuje “Wnuk działa”, śpi 2 sekundy, kończy się
exit(5)
.
- wypisuje “Wnuk działa”, śpi 2 sekundy, kończy się
- Proces dziecko:
- czeka na zakończenie wnuka (
wait()
), - wypisuje
PID
zakończonego procesu iWEXITSTATUS
.
- czeka na zakończenie wnuka (
- Proces rodzic:
- nie czeka na nikogo i kończy się od razu.
✅ Zadanie 5– Drzewo procesów
Stwórz program, który buduje strukturę:
Rodzic
├── Dziecko 1
│ └── Wnuk 1
└── Dziecko 2
└── Wnuk 2
Każdy proces powinien wypisać swoje:
PID
,PPID
, poziom w drzewie- nazwę roli (np. “Dziecko 1”)