powrót

Ćwiczenia 7

Obsługa procesów

fork

int fork(void)

błędy:

zwraca:

W procesie macierzystym funkcja zwraca identyfikator (pid) procesu potomnego (wartość większą od 1)

W procesie potomnym wartość 0

getpid getppid

int getpid(void)
int getppid(void)

zwraca:

pid aktualnego procesu

pid rodzica aktualnego procesu

exit

void exit(int status)

argumenty:

wait

int wait(int *status)
int waitpid(int pid, int *status, int options)

argumenty:

błędy:

zwraca:

identyfikator procesu potomnego, który się zakończył

0 jeśli użyto opcji WNOHANG, a nie było dostępnego żadnego potomka

execl

int execl ( char * path, char * arg0, ..., char * argn, char * null )

argumenty:

zwraca:

0 lub -1

Przykłady:

Zadania:

  1. Napisz program tworzący dwa procesy. Każdy ze stworzonych procesów powinien utworzyć proces - potomka. Należy wyświetlać identyfikatory procesów rodziców i potomków po każdym wywołaniu funkcji fork.
  2. Napisz program tworzący równocześnie trzy procesy zombi.
  3. Napisz program którego rezultatem będzie wydruk zawartości bieżącego katalogu poprzedzony napisem „Poczatek" a zakończony napisem „Koniec"
  4. Napisz daemona, który utworzy plik o nazwie PID w taki sposób, aby po usunięciu procesu plik zniknął.