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

Ответ на: комментарий от anonymous

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

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

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

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

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

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