Zadanie z procesami C Linux

Zadanie z procesami C Linux
A9
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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.

KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
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.

A9
jak Ci sie nie chce to nie pisz , nie chce skryptu , chce wskazówke jak to można wykonac
KM
No ale tu nie za bardzo jest co dawać wskazówkę. Zadanie nie jest koncepcyjne, zadanie wymaga po prostu wiedzy, jak je wykonać. No i jest trochę upierdliwe.
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:5 minut
  • Postów:5143
0
KM
No ale to nie na temat, tu nie chodzi o przesyłanie komunikatów w pipe'ach tylko o wysyłanie i łapanie sygnałów
KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
0

@arkadian96: Lektura na dziś wieczór:

Albo / i wykłady. Do wyboru.

KA
KA
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Warszawa
  • Postów:1683
0

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


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
nalik
  • Rejestracja:ponad 9 lat
  • Ostatnio:23 dni
  • Postów:1039
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ą.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.