Ćwiczenie 0. Zapoznaj się z poleceniami ps, job, fg i bg, oraz kill i killall i top oraz htop.
Napisz skrypt, który unicestwi 3 wypisany proces.
Napisz skrypt, który unicestwi 2 losowe procesy.
Napisz skrypt, który policzy ile procesów jest w stanie sleep (zapoznaj się ze wszystkimi rodzajami stanów procesów w systemie LINUX).
Przydatne mogą być polecenia między innymi: head, tail, cut, ps, sort -r, seq,.
Ćwiczenie 1. Napisz program, który wyświetli swój komunikat "hello world" oraz swój pid, oraz pid swojego procesu macierzystego.
Ćwiczenie 2. Wykorzystując funkcję fork napisz program, który utworzy 1 proces potomny. Proces macierzysty ma wyświetlić swój pid, pid własnego procesu macierzystego, oraz pid procesu potomnego (skąd go wziąć?). Proces potomny ma wyświetlić swój pid, pid własnego procesu macierzystego, oraz wartość zwracaną przez funkcję fork.
Ćwiczenie 3. Który z procesów z zadania 3 kończy się wcześniej?
Ćwiczenie 4. Tak zmodyfikuj program z zadania 3, aby proces macierzysty czekał, aż zakończy się proces potomny, i wyświetli informację o tym, że proces zostanie zakończony. Wykorzystaj funkcję wait.
Ćwiczenie 5. Zmodyfikuj program z zadania 5, aby proces macierzysty utworzył zadaną liczbę procesów (podaną z klawiatury) i zaczekał, aż każdy z procesów wypisze swój pid i zakończy się. Możesz wykorzystać funkcję pause() do wstrzymania wykonania procesów i weryfikacji tego co zrobiles z uzyciem polecenia pstree.
Ćwiczenie 6. Napisz wielowątkową aplikację w języku JAVA, która utworzy 10 wątków o numerach N od 1 do 10, i każdy z tych wątków śpi przez N sekund a następnie zakończy się. Uzyskaj informacje o utworzonych wątkach polecenia ps oraz top lub htop.
Ćwiczenie 7. Napisz program, który co sekundę zmienia swój pid na inny.
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>