What are “cerr” and “stderr”?

前端 未结 2 1141
臣服心动
臣服心动 2021-02-06 23:06

What is the difference between them and how are they used? Can anyone point me to examples?

Specifically, how do you \"write\" to the stream in both cases and how do you

2条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-02-06 23:32

    cerr is the C++ stream and stderr is the C file handle, both representing the standard error output.

    You write to them the same way you write to other streams and file handles:

    cerr << "Urk!\n";
    fprintf (stderr, "Urk!\n");
    

    I'm not sure what you mean by "recover" in this context, the output goes to standard error and that's it. The program's not meant to care about it after that. If you mean how to save it for later, from outside the program, see the next paragraph.

    By default, they'll go to your terminal but the output can be redirected elsewhere with something like:

    run_my_prog 2>error.out
    

    And, yes, the "screen" output is a stream (or file handle) but that's generally only because stdout/cout and stderr/cerr are connected to your "screen" by default. Redirection will affect this as in the following case where nothing will be written to your screen:

    run_my_prog >/dev/null 2>&1
    

    (tricky things like writing directly to /dev/tty notwithstanding). That snippet will redirect both standard output and standard error to go to the bit bucket.

提交回复
热议问题