From owner-FreeBSD-users-jp@jp.freebsd.org  Thu Sep  7 15:16:29 2000
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id PAA68989;
	Thu, 7 Sep 2000 15:16:29 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from nejimaki2m.pfu.co.jp (nejimaki2m.pfu.co.jp [202.248.171.151])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id PAA68984
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 7 Sep 2000 15:16:28 +0900 (JST)
	(envelope-from mat@mat2.tokyo.pfu.co.jp)
Received: from scansend.pfu.co.jp ([10.232.16.32])
	by nejimaki2m.pfu.co.jp (8.9.3/3.7W-99121211) with ESMTP id PAA26811
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 7 Sep 2000 15:16:25 +0900 (JST)
Received: from capella.pfu.co.jp (interscan2.pfu.co.jp [10.232.16.31])
	by scansend.pfu.co.jp (8.9.3/3.7W-99120918) with ESMTP id PAA00772
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 7 Sep 2000 15:16:26 +0900 (JST)
Received: from mat2.tokyo.pfu.co.jp (mat2.tokyo.pfu.co.jp [10.232.139.103])
	by capella.pfu.co.jp (8.9.3/3.7W-99120918) with ESMTP id PAA13647
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 7 Sep 2000 15:16:24 +0900 (JST)
Received: from mat2.tokyo.pfu.co.jp (localhost [127.0.0.1])
	by mat2.tokyo.pfu.co.jp (8.9.3/8.9.3) with ESMTP id PAA24810
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 7 Sep 2000 15:16:25 +0900 (JST)
	(envelope-from mat@mat2.tokyo.pfu.co.jp)
Date: Thu, 07 Sep 2000 15:16:25 +0900
Message-ID: <14775.12985.171082.26482Z@mat2.tokyo.pfu.co.jp>
From: Matsumura Naoki <mat@pfu.co.jp>
To: FreeBSD-users-jp@jp.freebsd.org
In-Reply-To: In your message of "Thu, 07 Sep 2000 11:30:15 +0900"
	<39B6FDB6.2DABD79F@sophia-systems.co.jp>
References: <39B6FDB6.2DABD79F@sophia-systems.co.jp>
User-Agent: Wanderlust/1.0.3 (Notorious) SEMI/1.13.4 (Terai) FLIM/1.12.7
 (=?ISO-8859-4?Q?Y=FEzaki?=) MULE/2.3 (SUETSUMUHANA) (based on Emacs 19.34)
Organization: PFU Limited.
MIME-Version: 1.0 (generated by SEMI 1.13.4 - "Terai")
Content-Type: text/plain; charset=ISO-2022-JP
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+000315
X-Sequence: FreeBSD-users-jp 54916
Subject: [FreeBSD-users-jp 54916] Re: select()
 =?ISO-2022-JP?B?GyRCJEskRCQkJEYbKEI=?= 
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: mat@pfu.co.jp

$B$^$D$`$i$G$9!#M>J,$J(B References $B$,IU$$$F$k$h$&$G!#(B

jun takei <takei@sophia-systems.co.jp> wrote:

> select()$B$O3FF~NO!"=PNO!"6[5^$K$D$$$F!"=`Hw$,(B
> $B$G$-$?$+$I$&$+$rD4$Y$i$l$k$H;W$$$^$9$,!"$?$H$((B
> $B$P!"F~NO$K$D$$$F=`Hw$,$G$-$?$H$$$&$3$H$O!">/(B
> $B$J$/$H$b(B1$B%P%$%H$r%j!<%I$G$-$k$H$$$&$3$H$G$7$g$&$+!)(B

$B=`Hw$,$G$-$?!"$H$$$&$N$,(B select $B$+$iLa$C$F$-$?$H$-(B
fd_set $B$N%S%C%H$,N)$C$F$$$k(B (FD_ISSET $B$,??(B)$B!"$H$$$&(B
$B0UL#$J$i$P!"(B
  - $B>/$J$/$H$b(B1$B%P%$%H$rFI$_9~$a$k(B
  - $B%U%!%$%k%G%#%9%/%j%W%?$,%/%m!<%:$5$l$?(B (EOF)
$B$H$$$&(B2$B$D$N>l9g$,$"$j$^$9!#(B

# $B%U%!%$%k%G%#%9%/%j%W%?$r%/%m!<%:!"$H$$$&I=8=$OJQ(B?


----$B0J2<!"4V0c$$$,$"$j$=$&$J%5%s%W%k(B---

#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>

main(){
  fd_set fd;
  fd_set org_fd;
  char buf[128];
  struct timeval waitval;

  waitval.tv_sec  = 1;		/* 1.0 $BICBT$D(B */
  waitval.tv_usec = 0;

  FD_ZERO(&org_fd);		/* $B%<%m%/%j%"(B */
  FD_SET(0, &org_fd);           /* $B%U%!%$%k%G%#%9%/%j%W%?(B0$BHV(B ($BI8=`F~NO(B) $B$r%;%C%H(B */

  while (1){
    memcpy(&fd, &org_fd, sizeof(org_fd));

    select(1, &fd, NULL, NULL, &waitval);

    if ( FD_ISSET(0,&fd) ){	/* 0$BHV$N%G%#%9%/%j%W%?(B ($BI8=`F~NO(B) $B$KF~NO$,$"$C$?(B */
      int ret;
      ret = read(0,buf,sizeof(buf)-1);
      if ( ret == 0 || ret == -1 ){
	printf("error or EOF\n");
	break;
      }
      buf[ret] = '\0';
      printf("key=%s\n",buf);

    } else {			/* $B%?%$%`%"%&%H(B */
      printf("Wait %d.%d sec. But no input.\n", waitval.tv_sec, waitval.tv_usec);
    }
  }
}
