Mail Archives: cygwin/1999/02/06/22:19:49
Francois Felix Ingrand <felix AT dial DOT oleane DOT com> writes:
>
> 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]...
[ .. snippet of example code ... ]
Hi Francois,
I have code that does similar thing and it works on Cygwin as it does on
every POSIX-type system I've run it on.
Unless someone can spot something weird, you'll need to supply standalone
code that we can compile and run. I'm not sure I understand your
logic behind dup'ing stdin/stdout and then fdopen for read/write in the
child, but that's probably because I don't know what your code really
does.
I suggest you chop it down to the smallest size possible and repost as a
bug report.
Regards,
Mumit
>
> 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 d
> up 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)XtInput
> ReadMask, read_propice, NULL);
> } else { /* The child */
>
> --
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> "J'en ai cauchemarde... Microsoft l'a fait."
> Professional: http://www.laas.fr/~felix mailto:felix AT laas DOT fr
> Personal: http://worldserver.oleane.com/felix mailto:felix AT dial DOT oleane DOT com
>
>
> --
> Want to unsubscribe from this list?
> Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
>
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
- Raw text -