gpt4 book ai didi

c - 中断linux命令重定向会丢失数据吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:12 25 4
gpt4 key购买 nike

如果我运行这样的 bash 脚本,并且在脚本中,它会调用一些可执行命令,例如以下

myexec args1 arg2 > out.txt

myexec 将通过 c API printf 打印一些日志信息。如果我打断脚本,因为myexec不知什么原因卡住了,会不会有一些日志信息丢失,而不是保存到out.txt文件中?在我的实验中,我发现它是,但是有什么办法可以解决这个问题吗?而且我不知道为什么日志信息没有刷新到ou​​t.txt文件

========

我使用 stdbuf 解决了我的问题,相关问题是:Force line-buffering of stdout when piping to tee

最佳答案

当您中断脚本时,很有可能 stdout 缓冲区没有被刷新。在您的程序中,在每个 printf 之后,立即添加一个 fflush(stdout) 来刷新缓冲区。或者,在 printf 的末尾添加一个换行符 (\n) - 这也会刷新缓冲区(但会在日志输出中添加一个换行符)。

关于c - 中断linux命令重定向会丢失数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32577264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com