Mam za zadanie napisać aplikację operujące na procesach. Niestety nie wiem jak napisać ją samodzielnie. Laboratoria nie posiadają żadnych objaśnień, a na wykładach inny materiał.
Zadania:
- Proszę napisać aplikację, która uruchamia zadaną ilość procesów potomnych (ilość podajemy z klawiatury). Zależność pomiędzy rodzicem a potomkiem musi mieć poniższą strukturę:
Należy zwrócić uwagę, że każdy z procesów rodziców musi oczekiwać na swojego potomka. Sposób generowania informacji przez procesy potomków jest analogiczny jak w poprzednim zadaniu. Taki sam jest także sposób raportowania procesu rodzica o zakończeniu działania procesu potomka jak i sposób uruchomienia programu.Kod: Zaznacz cały
proc_m | proc_p1 | proc_p2 | ... | proc_pN
- Napisać program, który uruchomi proces potomny. Proces potomny ma oczekiwać na dwie liczby podane z procesu macierzystego po czym obliczy ich różnicę a wynik wyśle do procesu macierzystego. Komunikacje zorganizować przez /proc.
proc wirtualny katalog, zawierający dane o aktualnie uruchomionych procesach proc/1 katalog z informacja o procesie nr 1; każdy proces ma w /proc podkatalog - Napisz aplikację, która w procesie potomnym zabezpieczonym przed przerwaniami z poziomu terminala będzie wyświetlała na terminalu podawanym w procesie macierzystym co minutę napis: minęła minuta
Dodane:
Zrobiłem pierwszy program, wydaje mi się, że prawidłowo, ale proszę jeszcze o sprawdzenie ewentualnych błędów.
Kod: Zaznacz cały
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
void wypisz(void);
int main()
{
int i,ilosc;
pid_t child;
printf("Podaj ilość procesów potomnych: \n");
scanf ("%d",&ilosc);
printf("Proces macierzysty:\n");
wypisz();
for (i = 1; i <= ilosc; i++)
{
child = fork();
switch (child)
{
case -1:
perror("fork error !!!");
exit(1);
case 0:
printf("\nProces potomny %d: \n", i);
wypisz();
execl("./zad1","zad1",NULL);
}
wait((int)getpid());
}
sleep(3);
exit(0);
}
void wypisz(void)
{
printf("id uzytkownika: %d\n", (int)getuid());
printf("id grupy uzytkownika: %d\n", (int)getgid());
printf("id procesu: %d\n", (int)getpid());
printf("id pr macierzystego: %d\n", (int)getppid());
printf("id grupy procesow: %d\n", (int)getpgrp());
fflush(NULL);
}