我正在写一个C程序,我正在打印到stderr并在代码中使用putchar()。我希望控制台上的输出显示所有的stderr,然后在程序结束之前最终刷新标准输出。有没有人知道一种方法,当putchar('\ n')发生时,会停止刷新stdout?C停止冲洗stdout
我想我可以只是做一个if语句来确保它没有putchar任何换行符,但我更喜欢一些行或代码放在程序的顶部停止所有的冲洗,直到我说fflush(标准输出)在程序
我正在写一个C程序,我正在打印到stderr并在代码中使用putchar()。我希望控制台上的输出显示所有的stderr,然后在程序结束之前最终刷新标准输出。有没有人知道一种方法,当putchar('\ n')发生时,会停止刷新stdout?C停止冲洗stdout
我想我可以只是做一个if语句来确保它没有putchar任何换行符,但我更喜欢一些行或代码放在程序的顶部停止所有的冲洗,直到我说fflush(标准输出)在程序
的底部使用pipeling从控制台运行命令:
my_command >output.txt
所有输出维滕到stderr
会立即出现。写入stdout
的内容将会变为output.txt
。
你想要做的事是可怕的脆弱。 C在任何情况下都没有义务执行stdio 不输出输出。即使你让它为你工作,这种行为将取决于不超过缓冲区大小。如果你真的需要这种行为,你可能应该自己缓冲输出(可能写入tmpfile()
而不是stdout
),然后将其全部复制到stdout
作为退出程序之前的最后一步。
为什么不写入缓冲区,然后将其写入标准输出,然后将其显示在要显示的位置? – simonc
你正在使用哪个操作系统? – alk