Гость Опубликовано 20 февраля, 2002 Жалоба Поделиться Опубликовано 20 февраля, 2002 Плз. помогите чайнику. Разбираюсь с программированием socket в линуксе. Набрал примерчик клиента и сервера из книжки Кейта Хевиленда. Все работает Ок. В сервере каждое новое соединение обслуживается ч\з fork(): ~~~~~~~~~~~~~~~~~~~~~ for(; { if( (newsockfd = accept(sockfd,NULL,NULL)) == -1) { perror("accept error"); continue; } if(fork() == 0) { printf("new connection %d\n",newsockfd); while(recv(newsockfd,&c,1,0) > 0) ~~~~~~~~~~~~~~~~~~~~~~~~~ Возникло два вопроса: 1) Обнаружил странное явление: пока работет server (srv.e) после каждого соединения в списке процессов остается лишняя строка ,хотя я вижу что дочерний процесс завершается (выдаю сообщение) F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 100 S 501 1014 949 0 69 0 - 676 wait4 tty1 00:00:00 bash 000 S 501 2596 2161 0 75 0 - 682 wait4 tty1 00:00:00 bash 000 S 501 2612 2596 0 69 0 - 328 wait_f tty1 00:00:00 serv.e 044 Z 501 2613 2612 0 69 0 - 0 do_exi tty1 00:00:00 serv.e 044 Z 501 2614 2612 0 69 0 - 0 do_exi tty1 00:00:00 serv.e 044 Z 501 2615 2612 0 69 0 - 0 do_exi tty1 00:00:00 serv.e 044 Z 501 2616 2612 0 69 0 - 0 do_exi tty1 00:00:00 serv.e 044 Z 501 2617 2612 0 69 0 - 0 do_exi tty1 00:00:00 serv.e 000 R 501 2620 2596 0 79 0 - 789 - tty1 00:00:00 ps 2) После очередного убивания серверной программы (там нет штатного выхода) она перестала запускаться: "bind error: Address already in use" В списке процессов её нет. Т.е. получается, что порт который я использовал остался занят до следующей перезагрузки? Неужели ОС не освобождает ресурсы при завершении процесса? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 20 февраля, 2002 Жалоба Поделиться Опубликовано 20 февраля, 2002 heheh tak vse eti prozessi zombie. vot i bukovka Z p ps table. i da, resursi sombi ne osvobozdayutsya:) shto bi ne plodit' zombi napishi signal(SIGCHLD, SIG_IGN); v samom nachale, do fork(); nu i konechno ze ne zabud' #include cheers, amigo Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.