6

我正在使用 HP-UX。我想禁用标准输出上的缓冲,以确保在使用以下命令进行核心转储时打印每一行代码:

setvbuf(stdout, NULL, _IONBF, 0); // turn off buffering for stdout

在这种情况下,它是否还会影响打印到正在重定向到某个日志文件的标准输出的其他进程?我想知道此更改是否仅适用于正在执行的进程。另外,我可以禁用进程中的缓冲,然后在代码中再次设置 _IO_FBF 吗?(每次通话前刷新)

PS:我知道这将禁用缓冲并具有更差的 I/O 性能,但我只想出于调试目的这样做。

4

1 回答 1

1

setvbuf 调用仅影响当前进程中的 stdio 例程以及任何子进程 fork'd 但不影响 exec'd。

C 标准中未指定在同一流上多次调用 setvbuf 时 stdio 如何响应,因此不要在您希望跨 C 实现可移植的代码中发出多次调用。

于 2012-01-05T02:08:30.960 回答