I am extending an existing C project that prints all information to stdout
with printf
. I would like to have this information printed both to stdout AND to a log file.
If I were a contributor to the original project, I would just substitute all printf
calls with my custom log function. Alas, I am not, so here's my question:
Is it possible to redirect printf
so that a single call prints both to stdout
and to file?
I know this is a long shot but, if it were possible, I could obtain what I want without having to modify the original code.
EDIT: Thank you for the answer and comments about the tee
command. However, I am looking for a way to do it directly in the C code, in an automated fashion, so that users won't have to bother using tee.
Thank you for your attention!
You're looking for the tee command:
./prog | tee file
This will show the output of ./prog
in stdout
and it will also store it in file
. Think of tee
as a tee fixture in plumbing :)
UPDATE
If you don't want to force users to think about using tee
, I would just make a shell script that does precisely what I showed above - invoke the program with tee
- and have users interact with the script only.
If that doesn't work for you, and you really want to change the source, I don't see any immediate easy solution. You could write a printf()
wrapper that writes into the two streams, but then you'd have to go ahead and replace every call to printf()
to your wrapper.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With