| Forum / Linux / wykrywanie aktywnej konsoli |
| Autor | Wiadomość |
| Mariusz Jedwabny
|
Posted: 6 Gru 2006 05:47:01 Witam Prosty program w c śmiga sobie w tle, jak to demon, przypuśćmy że pewnego dnia loguję się na maszynie i wysyłam mu SIGKILL. Obsługa sygnału w programie wyświetla na ekran "bye bye" i wykonuje exit(). Jednak "bye bye" wysyłane jest na konsole z której daemon został uruchomiony czyli de facto nie pojawi się na ekranie. Szukam sposobu jak w jednoznaczny sposób określić które /dev/tty jest tym aktywnym by tak przekierować komunikat. Byłbym wdzięczny za wszelkie sugestie. Pozdrawiam Mariusz J. |
| ethanak
|
Posted: 6 Gru 2006 07:01:03 [...] Szukam
sposobu jak w jednoznaczny sposób określić które /dev/tty jest tym aktywnym by tak przekierować komunikat. /dev/console pasuje? ethanak |
| Kamil Jońca
|
Posted: 6 Gru 2006 14:49:55 Witam
Prosty program w c śmiga sobie w tle, jak to demon, przypuśćmy że pewnego dnia loguję się na maszynie i wysyłam mu SIGKILL. Obsługa sygnału w programie wyświetla na ekran "bye bye" i wykonuje exit(). Jednak "bye bye" wysyłane jest na konsole z której daemon został uruchomiony czyli de facto nie pojawi się na ekranie. Szukam sposobu jak w jednoznaczny sposób określić które /dev/tty jest tym aktywnym by tak przekierować komunikat. #define aktywny Jeśli jesteś zdalnie zalogowany na 2 terminalach to na który ma pójść info ? KJ |
| pisz na.mirek
|
Posted: 6 Gru 2006 22:11:24 Witam
Prosty program w c śmiga sobie w tle, jak to demon, przypuśćmy że pewnego dnia loguję się na maszynie i wysyłam mu SIGKILL. Obsługa sygnału w programie wyświetla na ekran "bye bye" i wykonuje exit(). Jednak "bye bye" wysyłane jest na konsole z której daemon został uruchomiony czyli de facto nie pojawi się na ekranie. Szukam sposobu jak w jednoznaczny sposób określić które /dev/tty jest tym aktywnym by tak przekierować komunikat. Byłbym wdzięczny za wszelkie sugestie. Pogrzebać w kodzie wall? |
| Mariusz Jedwabny
|
Posted: 7 Gru 2006 05:58:24 #define aktywny Jeśli jesteś zdalnie zalogowany na 2 terminalach to na który ma pójść info ? No i w tym cała kwintesencja problemu, na ten z którego wysłano SIGKILL. Można to zrobić w ten sposób: program wysyłajacy SIGKILL nim to zrobi tworzy plik w ktorym zapisuje z ktorego terminala kozysta program odbierajacy SIGKILL zna polozenie tego pliku czyta z niego i na ten wlasnie terminal wysyla komunikat ale to jest strasznie brzydkie rozwiazanie i szukam jakiegos magicznego triku. Aktualnie zaczytuje się w tematyke pliku /var/run/utmp a nuż się okaże pomocny. Mariusz J. |
| Kamil Jońca
|
Posted: 7 Gru 2006 06:40:42 Dnia Thu, 07 Dec 2006 06:58:24 +0100, [...] Można to zrobić w ten sposób:
program wysyłajacy SIGKILL nim to zrobi tworzy plik w ktorym zapisuje z ktorego terminala kozysta program odbierajacy SIGKILL zna polozenie tego pliku czyta z niego i na ten wlasnie terminal wysyla komunikat ale to jest strasznie brzydkie rozwiazanie i szukam jakiegos magicznego triku. Uwaga na marginesie: Jak wyślesz sigkill to, o ile wiem, nie dasz szansy przeczytać programowi czegokolwiek. A jesli chodzi o rozwiązanie to chyba nie bardzo da się lepiej tego zrobić. KJ |
| Mariusz Jedwabny
|
Posted: 7 Gru 2006 07:13:15 Dnia Thu, 07 Dec 2006 06:58:24 +0100,
[...] Można to zrobić w ten sposób:
program wysyłajacy SIGKILL nim to zrobi tworzy plik w ktorym zapisuje z ktorego terminala kozysta program odbierajacy SIGKILL zna polozenie tego pliku czyta z niego i na ten wlasnie terminal wysyla komunikat ale to jest strasznie brzydkie rozwiazanie i szukam jakiegos magicznego triku. Uwaga na marginesie: Jak wyślesz sigkill to, o ile wiem, nie dasz szansy przeczytać programowi czegokolwiek. A jesli chodzi o rozwiązanie to chyba nie bardzo da się lepiej tego zrobić. Sorry cały czas miałem na myśli SIGTERM;) Dzięki za pomoc. |
| Kamil Jońca
|
Posted: 7 Gru 2006 07:30:15 Dnia Thu, 07 Dec 2006 08:13:15 +0100, [...] A jesli chodzi o rozwiązanie to chyba nie bardzo da się lepiej tego zrobić. Sorry cały czas miałem na myśli SIGTERM;) Dzięki za pomoc. Inna sprawa, ze .... po co Ci to ? Nie lepiej jeśli ten (jak rozumiem) demon sobie trzymał jakiś log i w momencie otrzymania sygnału *tam* zapisywał owo ostatnie pożegnanie ? Dlaczego tak Ci zależy, żeby to szło na konsolę ? KJ |
| Mariusz Jedwabny
|
Posted: 7 Gru 2006 10:28:02 Dnia Thu, 07 Dec 2006 08:13:15 +0100,
[...] A jesli chodzi o rozwiązanie to chyba nie bardzo da się lepiej tego zrobić. Sorry cały czas miałem na myśli SIGTERM;) Dzięki za pomoc. Inna sprawa, ze .... po co Ci to ? Nie lepiej jeśli ten (jak rozumiem) demon sobie trzymał jakiś log i w momencie otrzymania sygnału *tam* zapisywał owo ostatnie pożegnanie ? Dlaczego tak Ci zależy, żeby to szło na konsolę ? KJ Wiadomo jak to jest jak się człowiek uprze, ja się uparłem by nie wykonywać tu czytania/pisania do plików, nie zawsze musi być racjonalny powód;) Mariusz J. |
| Adam Wysocki
|
Posted: 7 Gru 2006 23:08:36 Prosty program w c śmiga sobie w tle, jak to demon, przypuśćmy że
pewnego dnia loguję się na maszynie i wysyłam mu SIGKILL. Obsługa sygnału w programie wyświetla na ekran "bye bye" i wykonuje exit(). W przypadku SIGKILL? Szukam sposobu jak w jednoznaczny sposób określić które /dev/tty jest
tym aktywnym by tak przekierować komunikat. Co to znaczy "aktywnym"? |
| Mariusz Jedwabny
|
Posted: 8 Gru 2006 05:13:53 Prosty program w c śmiga sobie w tle, jak to demon, przypuśćmy że
pewnego dnia loguję się na maszynie i wysyłam mu SIGKILL. Obsługa sygnału w programie wyświetla na ekran "bye bye" i wykonuje exit(). W przypadku SIGKILL? Miałem na myśli SIGTERM. Szukam sposobu jak w jednoznaczny sposób określić które /dev/tty jest
tym aktywnym by tak przekierować komunikat. Co to znaczy "aktywnym"? Ten tty lub pts z którego wysłano SIGTERM.... czyli ten który jest w danym momencie prawie napewno przez danego zalogowanego klienta obserwowany w oczekiwaniu na wynik. |
| Adam Wysocki
|
Posted: 8 Gru 2006 07:12:45 Szukam sposobu jak w jednoznaczny sposób określić które /dev/tty jest
tym aktywnym by tak przekierować komunikat. Co to znaczy "aktywnym"? Ten tty lub pts z którego wysłano SIGTERM.... czyli ten który jest w danym momencie prawie napewno przez danego zalogowanego klienta obserwowany w oczekiwaniu na wynik. To nie działa w ten sposób. Proces nie dostaje pida procesu, który go ubija (mając pida możesz sprawdzić terminal). Tak jak ktoś już napisał, zamiast (albo oprócz) wysyłania TERMa możesz zrobić coś innego. |
| Mariusz Jedwabny
|
Posted: 8 Gru 2006 09:00:34 Szukam sposobu jak w jednoznaczny sposób określić które /dev/tty jest
tym aktywnym by tak przekierować komunikat. Co to znaczy "aktywnym"? Ten tty lub pts z którego wysłano SIGTERM.... czyli ten który jest w danym momencie prawie napewno przez danego zalogowanego klienta obserwowany w oczekiwaniu na wynik. To nie działa w ten sposób. Proces nie dostaje pida procesu, który go ubija (mając pida możesz sprawdzić terminal). Tak jak ktoś już napisał, zamiast (albo oprócz) wysyłania TERMa możesz zrobić coś innego. No właśnie ja dobrze o tym wiem że nie można bezpośrednio odczytać tych danych więc szukałem jakiegoś triku...i to bardziej z ciekawości niż faktycznej potrzeby. Tak jak napisałem wcześniej zrobiłem to po prostu na plikach i działa tak jak tego oczekuje. |
|
Czas ładowania strony (sek.): 0.389 users miniBB.net © 2001-2010 | Polityka Prywatności e-giełdy + opisy gg + kumy fubi ° oko na maroko ° nimda °
|