Problem always URGENT with the argument F_SETOWN in the function fcntl

david Depere ddepere@cr2a-di.fr
Mon Dec 6 02:21:00 GMT 1999


Hello

	On UNIX, if you want to make UDP protocol (monothread) without block the 
process, the only means that i know is used the SIGIO signal, which is 
generated by the system when a event occurs on a file descriptor.
	For receive this signal, call the function fcntl(fd, SET_OWN, getpid) or 
ioctl(fd, SIOCSPGRP, getpid) is necessary even if we have created the file 
descriptor in the current process.
	If we don't do this action on the file descriptor then the signal handler 
for SIGIO signal cannot be called.

 	My problem is always that:
	The function fcntl used with the argument F_SETOWN return a value of -1 
and the errno indicate that
	"the argument is invalid".
	However in the include file fcntl.h, this argument exist. (#define 
F_SETOWN 6  /* Set owner - for ASYNC */ )
	Do you have found this problem already?

	int fdsock, arg;
	int PORTBASE = 19000;
	struct sockaddr_in  socket_in;

	fdsock = socket (AF_INET, SOCK_DGRAM, 0);
	if (fdsock == -1)
	return(-1);

	socket_addr.socket_in.sin_family = AF_INET;
	socket_addr.socket_in.sin_port = PORTBASE;
	socket_addr.socket_in.sin_addr.s_addr = htonl(INADDR_ANY);

	if (bind(fdsock,(struct sockaddr *) socket_addr, 
sizeof(socket_addr.socket_in))== -1)
  		{
  		close(fdsock);
   		return(-1);
		}

	arg = getpid();
	fcntl(fdsock, F_SETOWN, arg);	/* PROBLEM */

	I've heard that the product NuTCRACKER (www.datafocus.com) similar to 
Cygwin under WINDOWS NT use the function fcntl with the arguments F_SETOWN 
and F_GETOWN and CYGWIN not !!!!! WHY?
	
	See you soon!

>        		     )))((
>            	     (.  .)
> + ----------ooO-(_)-Ooo-----------	+
> +              David DEPERE 		+
> +      mailto:ddepere@cr2a-di.fr  	+
> + -----------------------------------	+



--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com



More information about the Cygwin mailing list