对于长时间运行的任务,我想要显示进度。我目前在printf
命令的开头使用\33[2K\r
,最后没有换行符或任何内容。我不喜欢这种方法的是,打印到相同终端(stderr
,例如,没有重定向)的消息出现在行尾,而不是新行。C printf term progress display with error messages on next line
如果我将\r
放在进度显示的末尾,其他消息(全部用\n
终止)将在视觉上覆盖进度显示,并且如果它们比这短,则与剩余物混合。另外,我不希望必须/不能适应打印其他消息的行,因为其中一些消息来自外部库。
我没有问题,如果我的进度显示将继续在新的行后,但我想有其他消息出现在自己的行(主要是错误消息,但我试图正常恢复尽可能多,所以这个过程将持续大部分时间)
任何想法?
我不需要可移植性,如果它只在Linux bash上运行,那就很好。
UPD:关于什么是我所要求的更好的可视化:
目前,我可以这样做:
status1ERR
status2
或者
ERRtus1
status2
或者
status1
status2 <--- ERR is overriden by status2 here
但我想要的是:
status1
ERR
status2
或者
ERR
status2
在最后一个例子ERR覆盖一个完整的状态行 - 我知道我可以清晰的线条与上述VT100字符序列,但我不能改变一些错误信息,所以它需要与他们一起工作总是格式为error message\n
打印状态行为“status,\ r \ n”。然后每个后续的状态行(没有其他正常printf发生)与“光标向上,状态,\ r \ n”。 – chux
也考虑过这种情况,但是如果出现错误,我会在下一个状态下自动覆盖它:( – griffin