Здравствуйте,Написал тут (еле еле) простенького демона, который слушает порт, и если кто подконектился форкает процесс который уже работает с этим "подконекченным" (правда долго мучался с зомби, но справился).
Теперь проблема в том что этот "слушающий демон" грузит 96 процессорного времени.
Сейчас сделано так:
while (1)
{
s1=accept(listener,&addr1,&addr_len);
if (s1 != -1) {
for (i=1; i < 100; i++)
signal(i,fsignal);
signal(17,SIGCHLD_handler);pid = fork();
if (pid == 0) {
read_write(s1);
break;
}
}
}Думал, sleep(1) вставить - но не знаю правильно ли это...
Заранее благодарен.
Уважаемый Игорь!
Попробуйте сделать так:while (1)
{
s1=accept(listener,&addr1,&addr_len);
if (s1 != -1) {
....
}
else {
/*
напечатать куда нибудь strerror (errno)
*/
}
}И посмотрите, какие ошибки генерит программа.
Вообще же, после fork-а в дочернем процессе рекомендуется
делать close(listener), а в родительском - close(s1).
Если в родительском этого не делать, то у Вас скоро закончатся доступные файл-дескрипторы и accept() будет всегда выдавать ошибку.