Zabijanie procesów zombie TCP Windows
Ostatnio zmodyfikowano 2013-06-16 16:06
MordiJC Temat założony przez niniejszego użytkownika  | 
Zabijanie procesów zombie TCP Windows » 2013-06-16 12:23:39 W kursie WINSOCK2 znalazłem takie coś: void sigchld_handler( int s ) {     while( wait( NULL ) > 0 );      } Wymagany jest do tego nagłówek sys/wait.h, którego w windowsie nie znajdę. Czy jest jakiś zamiennik za tę funkcję pod windowsem? I czy w ogóle na windowsie (i linux'ie) jest to potrzebne? P.S. Znalazłem w internecie coś takiego: signal(SIGCHLD, SIG_IGN); Podobno wysyła to informację do systemu, aby zabijał on pozostawione przez nas Zombie Procesy.  Nie wiem, czy to działa.  | 
 | 
DejaVu  | 
» 2013-06-16 13:27:51 Kod, który wkleiłeś nie ma najmniejszego sensu - z jakiego kursu to wziąłeś?
  /edit: A co do procesów 'Zombie' - wydaje mi się, że prędzej może Ci chodzić o wątek w aplikacji aniżeli proces, który przekłada się de-facto na całą aplikację. Jeżeli aplikacja się nie zamyka z powodu komunikacji sieciowej to znaczy, że jest niepoprawnie napisana i należy naprawiać kod źródłowy, a nie szukać obejścia problemu.  | 
 | 
MordiJC Temat założony przez niniejszego użytkownika  | 
» 2013-06-16 14:05:10 Ten kod wziąłem z Tło klient-serwer w kursie WinSOCK na tej stronie. Funkcja fork() tworzy kopię frocesu macieżystego i po zakończeniu działania zostawia "zwłoki", które trzeba usunąć. (z tego, co zrozumiałem)  | 
 | 
DejaVu  | 
» 2013-06-16 14:43:25 http://cpp0x.pl/kursy/Kurs-WinSock-C++/Tlo-Klient-Serwer/276Fakt, znalazłem kod w którym jest napisane to, o czym wspomniałeś. Kurs był pisany pod Linuksa, ale pod Windowsa również ma zastosowanie. W pierwszym/drugim rozdziale jest napisane, że funkcje pod Windowsem i Linuksem są takie same do komunikacji sieciowej i główną różnicą są pliki nagłówkowe, jakie należy dołączać. Kod z którego wyciągasz fragmenty jest napisany stricte pod Linuksa i go nie przeniesiesz na Windowsa, ponieważ fork (o ile mnie pamięć nie zawodzi) jest typowo linuksowym rozwiązaniem i nie ma go pod Windowsem. /edit: Dodam jeszcze, że metoda ze wspomnianego rozdziału jest beznadziejna do obsługi wielu klientów (jeden proces na obsługę jednego klienta), więc radzę zapoznać się z kolejnym rozdziałem :)   | 
 | 
MordiJC Temat założony przez niniejszego użytkownika  | 
» 2013-06-16 14:53:55 Wielkie dzięki. Do profesjonalisty trochę mi jeszcze brakuje, ale szybko się uczę (a przy najmniej mi się tak wydaje).  | 
 | 
Elaine  | 
» 2013-06-16 16:06:06 | fork (o ile mnie pamięć nie zawodzi) jest typowo linuksowym rozwiązaniem |  
 POSIXowym. Istniał już w Uniksie w latach siedemdziesiątych, obecnie istnieje na wszystkich liczących się serwerowych i desktopowych systemach poza Windowsem… ale nawet tam jądro wspiera tą funkcjonalność, problemem jest tylko to, że nikt nie wie, jak poinformować podsystem Win32 o nowym procesie — dlatego wynalazki w rodzaju Cygwina wolą emulować  fork w trybie użytkownika.  | 
 | 
|  « 1 »  |