[comp.unix.questions] SIGIO on a udp socket - how should I do?

akira@atson.asahi-np.co.jp (Akira Takiguchi) (03/28/91)

     I'm writing an application which use sunrpc[udp] for interprocess
communication.  Since I need asynchronous processing, I tried to set
FASYNC flag on the udp socket but no SIGIO seems to be delivered when
request arrives.  Is there something I should do to get SIGIO properly?

     I'm on a MIPS RS3230 with RISC/OS 4.51, bsd43 world.

     Thanks in advance,  (No email, please;  sorry for inconvenience)
-- 
       |    Akira Takiguchi  at ATSON, Inc. (a subsidiary of the Asahi Shimbun)
       |                WAKO GINZA bldg.  8-10-4 Ginza Chuo-ku Tokyo 104  Japan
       | Phone +81 3 3289 7051  Fax +81 3 3289 7066  SORRY, EMAIL NOT AVAILABLE

trevc@moosehead.mips.com (Trevor Cotton) (03/30/91)

In article <1264@anprda.atson.asahi-np.co.jp>,
akira@atson.asahi-np.co.jp (Akira Takiguchi) writes:
> 
>      I'm writing an application which use sunrpc[udp] for interprocess
> communication.  Since I need asynchronous processing, I tried to set
> FASYNC flag on the udp socket but no SIGIO seems to be delivered when
> request arrives.  Is there something I should do to get SIGIO properly?
> 
>      I'm on a MIPS RS3230 with RISC/OS 4.51, bsd43 world.
> 
>      Thanks in advance,  (No email, please;  sorry for inconvenience)
> -- 
>        |    Akira Takiguchi  at ATSON, Inc. (a subsidiary of the Asahi
Shimbun)
>        |                WAKO GINZA bldg.  8-10-4 Ginza Chuo-ku Tokyo
104  Japan
>        | Phone +81 3 3289 7051  Fax +81 3 3289 7066  SORRY, EMAIL NOT
AVAILABLE

Did you set the process ID or process group ID that you want the SIGIO 
delivered to?

e.g 

fcntl(fd, F_SETOWN, getpid());

If this has been done, then try using the ioctl instead :-

int onoff = 1;
ioctl(fd, FIOASYNC, (char *)&onoff);

akira@atson.asahi-np.co.jp (Akira Takiguchi) (03/30/91)

In article <1622@spim.mips.COM> trevc@mips.com writes:
>>      I'm writing an application which use sunrpc[udp] for interprocess
>> communication.  Since I need asynchronous processing, I tried to set
>> FASYNC flag on the udp socket but no SIGIO seems to be delivered when
>> request arrives.  Is there something I should do to get SIGIO properly?
>
>Did you set the process ID or process group ID that you want the SIGIO 
>delivered to?

     I did;  the bug was in the "fork-to-become-daemon" code which failed
to set up new process group id correctly :-(.  I should have found it before
posting...  Anyway, thank you very much for your advice;  now everything
works fine.
-- 
       |    Akira Takiguchi  at ATSON, Inc. (a subsidiary of the Asahi Shimbun)
       |                WAKO GINZA bldg.  8-10-4 Ginza Chuo-ku Tokyo 104  Japan
       | Phone +81 3 3289 7051  Fax +81 3 3289 7066  SORRY, EMAIL NOT AVAILABLE

amoss@SHUM.HUJI.AC.IL (Amos Shapira) (03/31/91)

akira@atson.asahi-np.co.jp (Akira Takiguchi) writes:
>     I'm writing an application which use sunrpc[udp] for interprocess
>communication.  Since I need asynchronous processing, I tried to set
>FASYNC flag on the udp socket but no SIGIO seems to be delivered when
>request arrives.  Is there something I should do to get SIGIO properly?

Try:
----------
#include <sys/sockio.h>