Zadanie z procesami C Linux

0

Witam , mam problem z następującym zadaniem :

Napisz cztery osobne programy. Każdy z nich powinien obsługiwać wybrany przez Ciebie sygnał.
Pierwszy z procesów będzie co sekundę wysyłał sygnał do drugiego procesu, drugi proces po ode-
braniu sygnału powinien wypisać na ekranie komunikat, a następnie przesłać sygnał do procesu
trzeciego. Proces trzeci powinien zachowywać się podobnie jak drugi, a proces czwarty powinien je-
dynie wypisywać komunikat na ekranie. Odliczanie czasu w pierwszym procesie należy zrealizować
za pomocą sigalrm.

Ma ktoś jakies wskazówki jak to zrobic ? Jak wywołać z programu pierwszego proces zeby otwierał się program 2 ?
Słyszałem ,że mozna to zrobic poprzez argument w funkcji main - argc , ale nie mam pomysłu jak to zrobic.

1

Ale czego od nas oczekujesz? Że ci skrypt przepiszemy tutaj? Za dużo tłumaczenia na raz - nie chce mi się.

Słyszałem ,że mozna to zrobic poprzez argument w funkcji main

Ech. CZTERY OSOBNE PROGRAMY. Czyli, jak mniemam, 4 osobne funkcje main.

0

@arkadian96: Lektura na dziś wieczór:

Albo / i wykłady. Do wyboru.

0

Jeżeli coś to mogę odpłatnie napisać Ci ten program. Pozdrawiam Karolina Lunis Tovarlds

0
arkadian96 napisał(a):

Ma ktoś jakies wskazówki jak to zrobic ? Jak wywołać z programu pierwszego proces zeby otwierał się program 2 ?

Na początku skup się na obsłudze sygnałów. Żeby wysłać sygnał do innego procesu potrzebujesz znać jako PID.
Ten można uzyskać na kilka sposobów:

  • Podać go jako argument programu. Tj. argc, argv, o których wspomniałeś. W tym wypadku mógłbyś wywoływać program w odwrotnej kolejności, ręcznie sprawdzać ich PID i podawać jako argument do następnego (poprzedniego) programu. Od biedy możesz po prostu wczytać PID z konsoli (scanf, cin).
  • PID można też uzyskać na skutek wykonania funkcji fork, która tworzy nowy proces i zwraca jako argument PID utworzonego procesu. Po wykonaniu fork nowy proces będzie miał dokładnie ten sam kod co pierwszy, więc jeszcze musisz wywołać execv aby załadować inną binarkę.
  • Wykonać komendę psof poporze funkcję popen. Wczytać PID z wyjścia funkcji popen.
  • Sprawdzić wszystkie procesy w systemie przez katalog /proc.
  • Pobierając info o procesach przez sysctl z parametrem CTL_KERN.

Sugeruję Ci opcję pierwszą albo drugą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1