LINUX.ORG.RU

select


0

0

Ситуация такая что при данном коде, если происходит событие в wd то 
оно замечательно обрабатывается. А все события в rd игнорируются :(
Пробовал вырезать полностью wd из кога чтоб проверить работатет ли
rd - работает!
В чем проблема подскажите?

	gint err,fd;
	fd_set rd,wd;
	FD_ZERO(&rd);
	fd = fileno(thread.stream);
	FD_SET(fd,&rd);
	FD_ZERO(&wd);
	FD_SET(thread.fifo,&wd);
	while(1){  
		err = select(((fd < thread.fifo)?thread.fifo:fd)+1,&rd,&wd,NULL,NULL);
		if(err < 0){
			g_printf("Error!\n");
		}
		g_print("err = %d\n",err);
		if(FD_ISSET(thread.fifo,&wd)){
			read(thread.fifo,buf,BUF_SIZE);
			g_printf("fifo :%s\n",buf);
			break;
		}
		if(FD_ISSET(fd,&rd)){
...
anonymous

Re: select


нужно инициировать fd_set перед каждым вызовом select(2) а не только по входу в цикл.

// wbr

klalafuda ★☆☆ ()
Ответ на: Re: select от anonymous

Re: select

if(FD_ISSET(thread.fifo,&wd)){
    read(thread.fifo,buf,BUF_SIZE);
    g_printf("fifo :%s\n",buf);

для операции чтения все-таки стоит проверять rd а не wd

// wbr

klalafuda ★☆☆ ()
Ответ на: Re: select от klalafuda

Re: select

Спасибо за советы - заработало!

Ждите очередную GPL программу :)

anonymous ()
Ответ на: Re: select от anonymous

Re: select

> Ждите очередную GPL программу :)

да понятно уж, что жпэльную. кто ж такое купит то :)))

// wbr

klalafuda ★☆☆ ()
Ответ на: Re: select от klalafuda

Re: select

Тот кто купит он покупает как правило кота в мешке, поскольку врядли кто аудит исходники. А как правило все без них продается

А тут все честно: "Я пионер - но я этого не стесняюсь!"

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.