HELP - Redirect output of already running process?
Patrick R. McManus
mcmanus at ducksong.com
Wed Jun 5 19:24:56 EDT 2002
[Derek D. Martin: Wed, Jun 05, 2002 at 06:34:03PM -0400]
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> At some point hitherto, John Abreau hath spake thusly:
> > You said "under some circumstances"; can you expand on that? When
> > would it *not* work?
>
> I'm unfamiliar with a lot of the more advanced uses of GDB, but in
> addition to the author's response, I can think of one more case where
> I believe this will not work: where there are no streams involved.
>
> freopen() opens a file, and reassociates the stream given as the last
> argument with that file. If the file was opened with open(), there is
> no stream to associate.
>
the technique works fine with write (1,buf,sz,flags) (fd=1 is always
stdout when main starts) - freopen modifes both the FILE * and the
underlying fd that last part is important! Indeed, stdout=fopen(blah)
won't work at all because it doesn't impact the underlying fd.
try it! That's always the best way. This works fine - no include with
stdio and write directly to STDOUT_FILENO (1) - no streams.
int main(int c, char **v)
{
while (1)
{
write (1,"hey\n",4,0);
sleep (1);
}
return 0;
}
More information about the Discuss
mailing list