I have seen
stderr used in a variety of different ways - as far as I understand, it is common to use
stdout for general information and
stderr for errors and the like. However, I have also seen
stderr used to output information messages related to the program itself (but not related to errors, warnings, debugging etc) and for debugging purposes (I assume the latter uses the error stream so that it can be filtered out to aid debugging), and
stdout for the more serious warnings which I would have thought would have belonged in
So, I was wondering - when is it seen as ideal to use
stderr in relation to what the program is outputting, aside from general output and errors? Is it more program-dependent, or more generic than that?