Problem with socketpair/fork/dup2/fdopen b20

Francois Felix Ingrand felix@dial.oleane.com
Sat Feb 6 04:58:00 GMT 1999


I cannot get this to work.
fdopen returns NULL and perror a bad file descriptor... which would suggest
that dup2 did not duplicate stdout in sp[1]...
It work under Solaris and other Unices...
void call_propice_cat(char *log_file)
{
 int pid, sp[2];
 if (socketpair(AF_UNIX, SOCK_STREAM, 0, sp) < 0) {
	 perror("call_propice: socketpair");
	 exit(1);
 }
 fcntl(sp[1], F_SETFD, 1); /* this is to avoid that the ns will be dup when we fork */
 
 if ((pid = fork()) < 0) {
	 perror("fork");
	 exit(1);
 }
 if (pid) {			/* The father */
	 close(sp[0]);		/* Close one side */
	 fcntl(sp[1], F_SETFL, FNDELAY); /* I am not sure this is required... */
	 if (dup2(sp[1],1) < 0)
	 perror("call_propice_cat:dup2");	/* Get stdout plug on sp[1] */
	 /* dup2(sp[1],2); Get stderr plug on sp[1] */
	 propicefp = (FILE *)fdopen(sp[1], "r+");
	 if (! propicefp) 
	 perror("call_propice_cat:fdopen");	/* Get stdout plug on
							 sp[1] */
	 setbuf(propicefp, NULL);
	 propiceInputId = XtAppAddInput(app_context, sp[1], (XtPointer)XtInputReadMask, read_propice, NULL);
 } else {			/* The child */
-- 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
"J'en ai cauchemarde... Microsoft l'a fait."
Professional: http://www.laas.fr/~felix mailto:felix@laas.fr
Personal: http://worldserver.oleane.com/felix mailto:felix@dial.oleane.com
-- 
Want to unsubscribe from this list? 
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /