Pod*_*Pod 7 c glibc libc stderr c-standard-library
C 规范要求所有 C 程序都有 3 个开放的流可供它们使用:stdout, stdin, stderr.
用户可以根据需要使用这些流,例如:
fprintf(stdout, "lol");
fputs("oops", stderr);
fgets(buffer, 20, stdin);
Run Code Online (Sandbox Code Playgroud)
C 标准库中的一些函数隐式使用这些,例如:
printf("lol"); /* implicitly uses stdout */
puts("rofl"); /* implicitly uses stdout */
int c = getchar(buffer); /* implicitly uses stdin */
Run Code Online (Sandbox Code Playgroud)
stderr?stderr?Eri*_*hil 10
该assert宏和perror功能写入标准错误流。如此做abort_handler_s功能(选购件附件K)。
exit关闭文件并刷新流,因此它隐式作用于标准错误流。_Exit并且abort可以这样做;C 标准允许但不要求它。fflush(NULL)刷新所有流。
C 2018 7.21.3 3 描述了输入和输出流之间的一些交互:在非缓冲流或行缓冲流上请求输入并且需要来自主机环境的字符,然后刷新行缓冲流。这可能会影响标准错误流。
根据 C 2018 Annex J(可选),C 实现可能会将一些浮点诊断写入标准错误流,作为正常程序终止的一部分。
在 C 2018 标准中搜索“标准错误流”和“stderr”不会揭示标准库中标准错误流的任何其他隐式用途。
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |