Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: sygnały  (Przeczytany 3652 razy)

grzechu

  • Gość
sygnały
« dnia: 2008-04-22, 19:40:46 »
witam. nie wiem czy w dobrym miejscu utworzyłem ten watek. mam do zrobienia taie zadanko:

Utworzyć proces obsługujący sygnały SIGUSR1, SIGUSR2 i SIGINT pochodzące od operatora. Po odebraniu sygnału SIGUSR1 proces wypisuje swój PID. Po odebraniu sygnału SIGUSR2 proces maskuje/odmaskowuje (przełącznik) sygnał SIGUSR1 (raczej należy wykorzystać ignorowanie niż blokowanie sygnału). Po odebraniu sygnału SIGINT, proces powinien zapisać do pliku czas ukończenia, kończy swoje działanie.

niestety problem polega na tym że ja nie wiem jak sie za to zabrać.

norbert_ramzes

  • Gość
sygnały
« Odpowiedź #1 dnia: 2008-04-22, 21:34:55 »
Cytat: gzrechu
niestety problem polega na tym że ja nie wiem jak sie za to zabrać.
Właśnie dlatego są zadania.

http://rtfm.killfile.pl/#praca_domowa

http://pl.wikibooks.org/wiki/C

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
sygnały
« Odpowiedź #2 dnia: 2008-04-22, 22:19:42 »
Na początku instalujesz gcc (lub g++). Chyba, że już takowe masz.

Otwierasz edytor i wpisujesz:
int main()
{

  // tu obsługa sygnałów

  // tu pewnie jakaś pętla, bo program ma chodzić w nieskończoność
  // w pętli pewnie jakiś usleep(), bo nie chcemy zajechać całego CPU

  return 0;
}
Jak obsługiwać sygnały, jak pobrać pid procesu, jak pisać do pliku, to chyba właściwa część pracy domowej. I chyba powinieneś to umieć, skoro ktoś dał ci takie zadanie.

Jeżeli jednak nie umiesz, to poszukaj na Google, przecież masz wszystkie potrzebne słowa kluczowe w swoim poście. Ja znalazłem to:
http://www.cs.cf.ac.uk/Dave/C/node24.html
http://www.intercon.pl/~sektor/cbx/basics/stdc.html
i masę innych przydatnych wyników.

Mogę też polecić ci lekturę podręcznika: `man signal`

Gdy już będziesz wiedział jak to działa, dodajesz brakujący kod, instrukcje #include potrzebnych plików nagłówkowych, kompilujesz (`g++ program.cpp -o program`), odpalasz (`./program`) i już.

Program sprawdzasz np poleceniem `kill` z odpowiednim parametrem oznaczającym dany sygnał (jak? `man kill`)