Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.os.linux.development.apps > #301
| From | David W Noon <dwnoon@spamtrap.ntlworld.com> |
|---|---|
| Newsgroups | comp.os.linux.development.apps |
| Subject | Re: How to dup a FILE* |
| Date | 2011-12-06 21:46 +0000 |
| Organization | Luton Operatic Society |
| Message-ID | <20111206214641.3265e741@dwnoon.ntlworld.com> (permalink) |
| References | <jbkl2v$a75$1@nntp.ts.fujitsu.com> <20111206195333.49dd7a9d@dwnoon.ntlworld.com> <8762hto2p4.fsf@sapphire.mobileactivedefense.com> |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Tue, 06 Dec 2011 20:38:47 +0000, Rainer Weikusat wrote about Re: How to dup a FILE*: >David W Noon <dwnoon@spamtrap.ntlworld.com> writes: >> On Tue, 06 Dec 2011 09:51:43 +0100, Josef Moellers wrote about How to >> dup a FILE*: >> >>>I need to juggle with stderr: redirecting it from one file to another >>>and back. >> [snip] >> >> I think you're over-complicating things here. After all, stderr is >> simply a pointer. So, cache the old pointer; open a new file stream >> stored in stderr; fclose(stderr) when done; reinstate the original >> pointer. > >That's a thoroughly stupid idea because it won't affect output to >'standard error filedescriptor' which doesn't go through the stderr >stream *and* while the glibc documentation claims that this should >work, it actually doesn't (or at least didn't for some random version >where I tried this about ten years ago -- only to be told that I >"should use freopen instead" by Ulrich Drepper [which I couldn't do >because I was trying to divert the output to a socket]). The C Standard Library does not provide "file descriptors" with any specified meaning, only as opaque integers. Consequently, all error logging *should* be done using the stderr stream, not fd of 2. It is only a happenstance of platform-specific shells and run-time libraries (e.g. glibc) that stderr defaults to fd of 2 on UNIX-like systems. My best suggestion is that you try it and see. Note also that freopen() closes the existing stream and opens a new one, so using that will make your initial stderr useless. The underlying file descriptor can change too, as a call to fileno() before and after freopen() will probably demonstrate. Again, just try it and see. - -- Regards, Dave [RLU #314465] *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* dwnoon@spamtrap.ntlworld.com (David W Noon) Remove spam trap to reply by e-mail. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) iEYEARECAAYFAk7ejUgACgkQ9MqaUJQw2MkDEwCeKRxnWCTuAROspG1BdNEUKGZh HhMAn0+grlyRl36gkG2XiTMlaG4KGRPw =Pc35 -----END PGP SIGNATURE-----
Back to comp.os.linux.development.apps | Previous | Next — Previous in thread | Next in thread | Find similar
How to dup a FILE* Josef Moellers <josef.moellers@ts.fujitsu.com> - 2011-12-06 09:51 +0100
Re: How to dup a FILE* Richard Kettlewell <rjk@greenend.org.uk> - 2011-12-06 09:16 +0000
Re: How to dup a FILE* Josef Moellers <josef.moellers@ts.fujitsu.com> - 2011-12-06 10:41 +0100
Re: How to dup a FILE* Jasen Betts <jasen@xnet.co.nz> - 2011-12-06 13:28 +0000
Re: How to dup a FILE* Josef Moellers <josef.moellers@ts.fujitsu.com> - 2011-12-06 16:57 +0100
Re: How to dup a FILE* David W Noon <dwnoon@spamtrap.ntlworld.com> - 2011-12-06 19:53 +0000
Re: How to dup a FILE* Rainer Weikusat <rweikusat@mssgmbh.com> - 2011-12-06 20:38 +0000
Re: How to dup a FILE* Richard Kettlewell <rjk@greenend.org.uk> - 2011-12-06 22:03 +0000
Re: How to dup a FILE* David W Noon <dwnoon@spamtrap.ntlworld.com> - 2011-12-06 21:46 +0000
Re: How to dup a FILE* Rainer Weikusat <rweikusat@mssgmbh.com> - 2011-12-07 17:52 +0000
csiph-web