This is the mail archive of the cygwin@sourceware.cygnus.com
mailing list for the Cygwin project. See the Cygwin
home page for more information.
[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index] [Subject Index] [Author Index] [Thread Index]
Problem with socketpair/fork/dup2/fdopen b20
- To: gnu-win32@cygnus.com
- Subject: Problem with socketpair/fork/dup2/fdopen b20
- From: Francois Felix Ingrand <felix@dial.oleane.com>
- Date: 06 Feb 1999 13:56:28 +0100
- Delivered-To: listarch-cygwin@sourceware.cygnus.com
- Delivered-To: mailing list cygwin@sourceware.cygnus.com
- Mailing-List: contact cygwin-help@sourceware.cygnus.com; run by ezmlm
- Organization: Felix's Inc.
- User-Agent: Gnus/5.070071 (Pterodactyl Gnus v0.71) XEmacs/20.3 (Vatican City)
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